应该在 reactjs flux 中存储调用操作吗?
Should stores call actions in reactjs flux?
我当前的 reactjs/flux 实现是让组件调用操作,操作调用网络 api,然后网络返回商店。
我有一组复选框,其中复选框的状态在商店中进行管理,但每次更新复选框时,我都想使用商店的状态向服务器进行查询。我现在被迫做的是在单击复选框时调用更新复选框存储的操作,在复选框存储中,将变量设置为 "queryServer",然后在复选框组件中,选中 "queryServer" 和执行另一个操作来查询服务器。
如果组件和商店都可以进行操作调用似乎更简单,这样,当我更新复选框商店时,我可以启动操作直接查询服务器,而无需设置愚蠢的 "queryServer" 变量并具有组件检查。
虽然它看起来确实使事情变得更简单,但它似乎违背了通量架构的本质,即所有操作都从视图启动。
我的方法是将商店的状态提取到视图中,然后从那里将其传递给操作。这将使您的商店尽可能地保持愚蠢,只在数据进入应用程序时接收数据。
更具体地说,您的商店将有一个 getData
功能,可以 returns 存储原始数据。在您的组件中,您的复选框的点击处理程序将包含如下代码:
var data = MyStore.getData();
MyActions.queryServer(data);
然后您的操作将进行 API 调用(因为它可能是执行异步操作最安全的地方)并通过调度程序将新数据传递到您的商店。
我当前的 reactjs/flux 实现是让组件调用操作,操作调用网络 api,然后网络返回商店。
我有一组复选框,其中复选框的状态在商店中进行管理,但每次更新复选框时,我都想使用商店的状态向服务器进行查询。我现在被迫做的是在单击复选框时调用更新复选框存储的操作,在复选框存储中,将变量设置为 "queryServer",然后在复选框组件中,选中 "queryServer" 和执行另一个操作来查询服务器。
如果组件和商店都可以进行操作调用似乎更简单,这样,当我更新复选框商店时,我可以启动操作直接查询服务器,而无需设置愚蠢的 "queryServer" 变量并具有组件检查。
虽然它看起来确实使事情变得更简单,但它似乎违背了通量架构的本质,即所有操作都从视图启动。
我的方法是将商店的状态提取到视图中,然后从那里将其传递给操作。这将使您的商店尽可能地保持愚蠢,只在数据进入应用程序时接收数据。
更具体地说,您的商店将有一个 getData
功能,可以 returns 存储原始数据。在您的组件中,您的复选框的点击处理程序将包含如下代码:
var data = MyStore.getData();
MyActions.queryServer(data);
然后您的操作将进行 API 调用(因为它可能是执行异步操作最安全的地方)并通过调度程序将新数据传递到您的商店。