我希望getKey函数等待来自friendExist的更新状态。 目前,getKey设置为false作为初始状态,但friendExist应将布尔值设置为" true"。但似乎" this.props.getKey(this.props.exist)"等待" this.props.friendExist(uid)"在运行代码之前进行更新。
componentDidMount(){
const uid = 'MZdKuFpGmGRntb0nyF4PO0f6kco1';
this.props.friendExist(uid);
//friendExist should update this.props.exist to true
this.props.getKey(this.props.exist)
}
friendExist和getKey都是分派新状态的动作。
答案 0 :(得分:0)
我假设您正在使用react-redux mapStateToProps()来获取更新状态。这种行为是预期的,因为react-redux在内部使用反应的setState(),这是异步的,这意味着你的状态可能不会在你分派动作的同时映射到道具。
我建议创建一个函数getKeyIfFriendExist(),它可以调度和检查里面的最新状态。
答案 1 :(得分:0)
您的函数componentDidMount
是一个同步函数,因此它将在代码内执行而无需等待任何不相关的函数。除非您将其类型更改为异步,并准确告诉您希望它等待的方式,否则this.props.exist
在执行this.props.getKey
时永远不会成立。
另一种更简单的解决方案是在this.props.exist
更新componentWillReceiveProps
,然后在其中执行this.props.getKey
componentDidMount(){
const uid = 'MZdKuFpGmGRntb0nyF4PO0f6kco1';
this.props.friendExist(uid);
}
componentWillReceiveProps(nextProps, nextState) {
if (nextProps.exist) {
this.props.getKey(nextProps.exist)
}
}