我想实现数据流的以下顺序:
如果设置了此属性,则所有其他依赖组件及其自己的reducer和actions应根据id获取其数据
componentWillMount() {
this.props.actions.setItemId(this.props.params.id);
if(this.props.id){
this.props.fetchItemInformations(this.props.id);
}
}
我知道这个流程不起作用,但我不知道如何实现它。
答案 0 :(得分:0)
许多方法可以做到这一点,但如果您的问题是由异步问题引起的,那么您可以使用Redux Thunk等中间件。这基本上允许你链接你的动作,即一旦设置了id,然后发出另一个动作来做X.
请参阅此处 - https://github.com/gaearon/redux-thunk
或者,您可以在componentWillReceiveProps()生命周期事件中执行if语句,并检查它是否已在那里设置。如果它已经发出你的下一个动作......
答案 1 :(得分:0)
如果我理解你的问题,你想从react-router获取属性record-id
(这是我假设的url哈希?)。
您可以直接将此道具传递给所有孩子(作为道具),并根据需要处理孩子的价值。去做这个,
渲染{ this.props.children }
时也传递道具;就像是
{ React.cloneElement(this.props.children, { record-id: record-id }) }
我说这是最好的做法;如果要将record-id
传递给父组件的其他组件(不是直接子组件);您需要触发一个动作并处理动作以更新相关的减速器状态。希望有所帮助。