我正在使用React + Redux应用程序。我通过Redux操作调用API并将响应数据存储在Redux状态。但有一种情况,我不必将API响应数据存储在Redux商店中。
所以问题是,是否有任何合理的理由来调用API Redux操作或者我应该直接调用API,因为我没有存储 Redux商店中的响应数据?
答案 0 :(得分:2)
这取决于您尝试拨打什么样的电话,以及关注的是谁。
以下是一些案例:
这是跟踪某事的单向通话吗?您可以触发在middleware
中获取的操作。这是发送分析的好例子。
这不必存储在Redux的商店中。
这是一个调用,你的应用程序的其他部分需要这些数据吗?那么这是一个很好的用例,用于在Redux Store
中进行更新,以便在读取此内容时使用其他组件并使用用于决定渲染内容的道具等。
这是一个只涉及一个组件或隔离部件的调用吗?您可以在componentDidMount
中的组件内进行此调用,因为这与其他人无关
或者看一下Sagas,他们会观察所有被调度的动作,并以干净的方式决定如何处理它们。
答案 1 :(得分:2)
接受的答案很好地解释了可以启动API调用的场景。为了获得更好的用户体验,我们始终会显示一些spinner
或busy sign
来通知用户正在发出请求但尚未完成。可能会发生 API响应没有改变状态,但为了让用户知道某个任务是在后台运行,我们通常更新store
(用于全局访问)或{{1 (对于组件级访问),其值为state
或任何有意义的值。
因此,它取决于开发人员,他/她是否想要显示一些isFetching
标志或静默执行API请求。此外,如果他们想要显示busy
符号,那么他们应该决定应用程序的哪个部分应该知道API调用。如果它仅限于组件级别,则无需在busy
中进行调用,否则,对于全局级别,是的,它应该在actions
内。
答案 2 :(得分:1)
为了统一,您应始终遵循redux方式,即使所有响应都未存储在Redux中。如果您没有使用API调用的响应,这也是一个问题,您为什么要拨打电话。这种说法是违反直觉的。如果你以某种方式使用响应,那么Redux方式更好。建议始终将响应存储到对Redux的调用并使用它,我相信您正在进行API调用以在UI上执行某些操作。