Javascript ReactJS-在componentDidMount中等待操作完成
下面是有问题的代码。我在Javascript ReactJS-在componentDidMount中等待操作完成,javascript,reactjs,reactjs-flux,Javascript,Reactjs,Reactjs Flux,下面是有问题的代码。我在componentDidMount中有一个异步UserActions调用,之后我立即从由该操作填充的UserStore中查找用户信息。显然,我不能依赖定义UserStore.isLargeAccess()。将依赖于回调操作的代码放在回调中是最好的约定,还是我遗漏了一些更大的设计选择 componentDidMount() { this.changeListener = this._onChange.bind(this); UserStore.addChan
componentDidMount
中有一个异步UserActions
调用,之后我立即从由该操作填充的UserStore
中查找用户信息。显然,我不能依赖定义UserStore.isLargeAccess()
。将依赖于回调操作的代码放在回调中是最好的约定,还是我遗漏了一些更大的设计选择
componentDidMount() {
this.changeListener = this._onChange.bind(this);
UserStore.addChangeListener(this.changeListener);
OrganizationStore.addChangeListener(this.changeListener);
// Fetch user info
UserActions.get(AuthStore.username);
// UserStore.isLargeAccess() is undefined here,
// because the previous action has not finished.
if (UserStore.isLargeAccess()) {
OrganizationActions.getUsers(this.state.organization);
}
if (UserStore.isGlobalAccess()) {
OrganizationActions.getOrganizations();
}
}
它应该如何工作(如果我理解您的流程):
在#1中,通过注册不同的回调,您的意思是添加不同的更改侦听器吗?也就是说,这一行:
UserStore.addChangeListener(this.changeListener)代码>?是的,我是认真的。这不是必需的,但它有助于并使您的模块流程更清晰。嗯。。。我将代码更改为以下内容。首先,我调用UserAction
来填充UserStore
。假设我注册了一个回调来观察UserStore
中的更改,一旦UserStore
发出更改,我就会调用OrganizationAction
。但是,这引发了以下错误:“不能在调度的中间发送。”我应该在这个问题中添加我的新代码吗?