Javascript 在flux中从动作创建者处获取存储数据是常见的做法吗?

Javascript 在flux中从动作创建者处获取存储数据是常见的做法吗?,javascript,reactjs,reactjs-flux,Javascript,Reactjs,Reactjs Flux,在flux体系结构中,从action creator中的存储中获取数据是常见的做法吗?如果不是,这是否意味着最好通过组件参数传递网络调用所需的所有数据 我有一个应用程序,它有一个3层的深层组件,我想知道将数据从1层复制到3层有多现实 任何解释都将不胜感激。在action creators中调用商店的getter是可以的,但通常action creator会调用一个WebAPIUtils模块,在那里可以找到对商店getter的实际调用 我会质疑通过视图层传递任何视图(通常是组件)实际未使用的内容的

在flux体系结构中,从action creator中的存储中获取数据是常见的做法吗?如果不是,这是否意味着最好通过组件参数传递网络调用所需的所有数据

我有一个应用程序,它有一个3层的深层组件,我想知道将数据从1层复制到3层有多现实


任何解释都将不胜感激。

在action creators中调用商店的getter是可以的,但通常action creator会调用一个
WebAPIUtils
模块,在那里可以找到对商店getter的实际调用

我会质疑通过视图层传递任何视图(通常是组件)实际未使用的内容的做法

网络呼叫通常在专用实用模块内进行。这些模块有时称为数据加载程序或WebAPIUtils模块。它们与其他实用程序模块的不同之处在于,它们通常在进行网络呼叫之前从存储中提取数据


其他实用程序模块应该是纯函数库,如果有的话,依赖性很少。这使它们非常便于携带。

您如何决定何时将逻辑放入action creator、WebAPIUtil或store?缓存逻辑(例如,如果数据不在存储中,则仅从服务器获取数据)应该在哪里运行?例如,存储?对于存储与操作创建者的问题,我认为主要是风格问题,以及您是否相信您的团队不会犯直接在存储中处理响应的错误。如果你把它放在动作创造者身上,就没有办法犯这样的错误。为项目选择一种方法并坚持下去。对于缓存,我看到了不同的方法,但它们显然都需要直接或通过getter访问存储数据。通常,我喜欢将与XHR相关的所有内容都保存在Utils模块中,只需从应用商店或操作创建者调用即可。@fisherwebdev如何确保应用商店在需要时提供正确的数据?如果填充存储的ajax调用尚未完成,会发生什么情况?XHR调用通常通过三种不同的操作进行处理:启动、成功、失败。我不太清楚您所说的确保“商店在您需要时有正确的可用数据”是什么意思,但视图层只是显示商店中的数据。如果XHR是由用户输入发起的,则可以通过显示启动时附带的数据,然后在出现成功或失败后确认/回滚,来执行乐观更新。或者,如果您的XHR用于初始数据,您可以使用空值作为占位符,如果您的数据为空,则只需显示微调器。如果您能提供帮助,我建议您不要将XHR用于初始数据,而是尝试将数据包含在初始页面加载中,只是为了更好的用户体验。然后,在渲染之前,您可以获取数据并在加载了数据的初始动作中分派它。但是,如果使用页面加载获取数据确实不是一个选项,那么我将使用null和微调器。