reactjs - 分派(dispatch)操作是否总是会导致应用程序状态发生变化?

标签 reactjs redux redux-toolkit

这更像是一个最佳实践问题。我正在考虑我在 reducer 中观察到的一段代码,它的运行情况如下:

if (!state.arrayOfObjects) return;
else {/** add an object to the array of objects/}

直观上,我认为操作是发生的对应用程序状态进行一些更改的事情。如果调度一个 Action 不会导致状态改变,那么我觉得这个 Action 很可能根本不应该被调度。如果 reducer 中存在阻止更改发生的某些条件,那么它可能应该是操作本身分派(dispatch)的条件。

另一方面,也许 reducer 中的条件是根据您不一定希望订阅组件的属性创建条件的一种方法。但是,我认为如果特定操作取决于该属性,那么组件不需要通过订阅获取该属性的最新值来确定是否应该分派(dispatch)它,这会很奇怪。

最佳答案

在 Redux 中,任何数字或 reducer 都可以对任何操作使用react。其中包括 0 个 reducer 和 50 个 reducer 。

Redux 风格指南鼓励 Model Actions as Events, Not Setters并发送至Put as Much Logic as Possible in Reducers .

因此,虽然这可能不是常见情况,但具有任何 reducer 或中间件都不会使用react的操作是完全可以的 - 例如用于记录目的或因为 reducer 将来可能会使用它。根据某些逻辑, reducer 有时会使用react,这是完全正常的,并且 100% 没问题。

关于reactjs - 分派(dispatch)操作是否总是会导致应用程序状态发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70383197/

相关文章:

ruby-on-rails - 将 Rails 和 React 应用程序拆分到单独的 Docker 容器中?

reactjs - react 并重新选择选择器声称更新后状态相同

reactjs - 如何通过 map 函数使用 React 和 Firebase 有条件地渲染元素?

reactjs - 为什么初始状态为null时createSlice会报错?

reactjs - 组件已经渲染后,如何使用 redux-toolkit 从 Redux store 获取更新状态?

javascript - 缓存 react 路由器路由

javascript - Redux 获取 JSON 数据

react-native - 我如何从 Appjs 中的商店获取状态?

reactjs - 为什么我的 React Redux TypeScript 应用程序可以在除 iPhone 6 iOS 12.0.1 以外的任何地方运行(它是一个空白的白屏)?

reactjs - 我应该将 RTK 查询结果放入商店吗?