Reactjs 反应+;Flux:在一个动作之后调用另一个动作的最佳实践?
我有一个组件,我们称之为Reactjs 反应+;Flux:在一个动作之后调用另一个动作的最佳实践?,reactjs,action,flux,Reactjs,Action,Flux,我有一个组件,我们称之为List,它调用一个action creatorAction1.getItems()。 在Action1.getItems()从服务器检索到信息后,我需要调用另一个操作创建者:Action2.getMoreItems(),这在不同的文件中是一个完全不同的操作 事实: 两个操作创建者都会发送一个操作并更改存储 不能调用 Actudio2. GoMeReItMeScript()/ 列表> > ,因为它引发了一个错误“不能在调度的中间发送… > 可能性 在服务器返回后,在
List
,它调用一个action creatorAction1.getItems()
。
在Action1.getItems()
从服务器检索到信息后,我需要调用另一个操作创建者:Action2.getMoreItems()
,这在不同的文件中是一个完全不同的操作
事实:
Action1.getItems()内调用Action2.getMoreItems()
Action1.getItems(回调)
并从List
组件调用Action2.getMoreItems()
谢谢大家! 是否取决于
getItems
的返回值?如果是这样,您可以在中调用操作,然后调用getItems
的回调
如果不是,那么您可以同时调用这两个调用,然后查看承诺的结果
所以在你的问题中,我的票数是第二。我不认为这是一个丑陋的解决方案。您正在将获取项目和更多项目的责任委托给您的操作。组件本身并不知道这一点,只是简单地为这些项目发送了一个请求。它们的构建方式对组件应该是透明的。大多数flux实现都有一个类似“waitFor”的方法,它让一个存储等待另一个存储完成
假设您的存储中需要两个执行2方法:GetUser
和GetPermissions
。第一个获取用户,后一个获取用户拥有的权限。显然,GetPermissions
需要等待从第一个方法获取用户对象
在本例中,您将分派一个名为GetUser
的操作,并使两个存储函数都侦听该操作。因此,如果分派GetUser
,两个存储方法都会执行
在alt.js(flux实现)和许多其他方法中,有类似于waitFor(store)
的方法,因此GetPermissions
可以等待UserStore获取用户。在alt.js伪代码中,如下所示:
// UserStore
function getUser() {
fetch('api/user').then(this.setState);
}
// PermissionsStore
function getPermissions() {
this.waitFor(UserStore);
let user = UserStore.getState().user;
fetch('api/permission', user).then(this.setState);
}
正如我所说,这不是工作伪代码,但它展示了这个概念。如果您感兴趣,flux实现alt.js非常棒。请访问谢谢您的回复,您所说的确实有道理。那么,要求另一个动作创建者提供()动作创建者可以吗?在我看来,这完全可以。