我想我知道答案,但只是为了确保:
当Redux状态更改为某个条件(例如this.setState()
)时,我希望React组件调用state.dataLoaded === true
。我应该以某种方式使用subscribe
,还是那个级别太低而我应该使用connect
将状态映射到道具?在这种情况下,我认为这样的事情是可以接受的:
componentWillReceiveProps(nextProps) {
if (nextProps.dataLoaded) {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(nextProps.posts)
});
}
}
答案 0 :(得分:12)
您明确应该使用connect
来执行此操作。当redux的状态发生变化时,将生成新的道具并触发componentWillReceiveProps
。
class MyComp extends React.Component {
componentWillReceiveProps(nextProps) {
if (nextProps.dataLoaded) {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(nextProps.posts)
})
}
}
}
export default connect(
state => ({
dataLoaded: state.someStore.loaded
})
)(MyComp)