store.getState() ?

问题描述 投票:0回答:1

我们最近将代码库迁移到了 React18,并将 redux 升级到了最新版本。从那时起,我们面临一个问题,即对于代码中的任何错误,store.getState() 以某种方式返回初始状态值。当发生这种情况时,错误报告也是错误的,因为它破坏了其他地方的代码,而不是错误发生的确切位置。这使得识别实际错误变得非常困难。

当前的行为是什么?

在选择器中,如果我们使用 store.getState() 而不是使用 useSelector 钩子传递的状态,则会破坏应用程序。这是预期的行为吗?我知道在减速器中我们不应该使用 store.getState() 但在文档中我找不到在选择器中使用 store.getState() 是否是一个不好的做法。

Redux 现在在做什么。

当代码因错误而中断时,选择器中的 store.getState() 返回初始状态值,并抛出一些其他错误,因为 getState() 返回初始状态,这会导致错误报告。

为什么在选择器中使用 store.getState() ?

一些选择器调用其中的方法,然后再次调用其他一些函数来产生最终输出。这些内部方法使用 store.getState() 而不是从根选择器传递状态。

为什么这么写

主要原因是这些方法将状态值转换为以不同的格式返回,并且可以从组件和选择器中调用。所以主要是为了避免从各个地方传递状态。此外,在组件内,如果满足任何条件,则可以调用这些方法,这与需要在渲染开始时使用 useSelector 挂钩调用的选择器不同。

reactjs redux react-redux state react-18
1个回答
0
投票

useSelector 和 getState 之间的根本区别在于,当组件使用 getState 时,React 并不知道该组件依赖于状态。

useSelector 告诉 React,当选择发生变化时,它应该触发新的渲染并使用更新数据。 getState 不会触发。

© www.soinside.com 2019 - 2024. All rights reserved.