首页  >  文章  >  web前端  >  Redux Action 创建者应该如何访问状态:从 Store 还是 Thunk?

Redux Action 创建者应该如何访问状态:从 Store 还是 Thunk?

Barbara Streisand
Barbara Streisand原创
2024-10-21 18:48:29439浏览

How Should Redux Action Creators Access State: From Store or Thunk?

在 Action Creators 中访问 Redux 状态

问题:

在 Redux 应用程序中,如何可以从动作创建者内部访问全局存储状态吗?以下方法是否合适?

方法 1:

<code class="javascript">import store from '../store';

export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return {
    type: SOME_ACTION,
    items: store.getState().otherReducer.items,
  }
}</code>

方法 2:

<code class="javascript">export const SOME_ACTION = 'SOME_ACTION';
export function someAction() {
  return (dispatch, getState) => {
    const {items} = getState().otherReducer;

    dispatch(anotherAction(items));
  }
}</code>

答案:

在 Action Creator 中访问状态的可接受性是 Redux 社区内争论的话题。

方法 1:

不鼓励直接通过 store.getState() 访问状态,因为它依赖于 store 是全局单例。在服务器上,每个请求可能存在单独的存储,这种方法是有问题的。

方法 2:

这种方法是首选,因为它使用 Redux Thunk 中间件,允许异步操作并通过 getState() 检索存储状态。 Thunk 在客户端和服务器上无缝工作,并确保状态访问与特定操作隔离。

注意事项:

  • Redux Creator 的观点: 操作创建者中的状态访问可能会掩盖更改历史记录,因此通常不鼓励。
  • Redux 维护者的观点: 鼓励在 thunk 中使用 getState,因为它利用了专门为此类用例设计的功能.

最终,这两种方法都可以产生预期的结果,但方法 2 是推荐的最佳实践,可以避免潜在的陷阱并保持跨环境的一致性。

以上是Redux Action 创建者应该如何访问状态:从 Store 还是 Thunk?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn