我正在为我们正在开发的应用程序添加滑动以删除功能。由于我们不使用外部库来处理它的原因,所以我自己编写它。
在我的项目中,我有一个保存状态的容器。我setState
用来更新状态,并将状态作为道具传递给这个子组件。在下面的组件中,componentWillReceiveProps
当它们发生时使用正确的值更新被调用,但是它的子组件没有接收到它的 props 的更新。如果这还不够有意义,或者您需要查看更多代码,请告诉我。我只包含了我认为相关的代码部分,因为这是一个私人项目。
constructor(props) {
super(props);
this.renderWishlistRow = this.renderWishlistRow.bind(this);
}
renderWishlistRow(product) {
return (
<WishlistRow
item={product}
onItemPress={this.props.onItemPress}
onRemoveAction={this.props.onRemoveAction}
shouldCloseRemoveButton={this.props.shouldCloseRemoveButton}
onScrollAction={this.props.onScrollAction}
itemPressed={this.props.itemPressed}
onEndScroll={this.props.onEndScroll}
/>
);
}
然后,在渲染函数内部:
return (
<KeyboardAwareListView
dataSource={this.props.dataSource}
renderRow={this.renderWishlistRow}
renderSeparator={renderCardDividerAsSeparator}
onScrollBeginDrag={this.props.onScrollAction}
scrollEventThrottle={16}
onScrollEndDrag={this.props.onEndScroll}
/>
);
提前感谢您的帮助。
编辑:我正在使用以下代码在父组件中设置状态:
this.setState({
shouldCloseRemoveButton: true,
});
我最初没有包含它,因为componentWillReceiveProps
正在调用来自父组件的正确状态更改。
编辑 2:我的应用程序这部分的应用程序层次结构如下:
WishlistContainer: contains the setState calls and passes as a prop: shouldCloseRemoveButton={this.state.shouldCloseRemoveButton}
Wishlist: passes props to its child WishlistRow: shouldCloseRemoveButton={this.props.shouldCloseRemoveButton}
WishlistRow: Continues to pass the props down as above, but componentWillReceiveProps is not called here, props are not updating at this level.