当状态更新时,React @redux/toolkit 不会重新渲染组件

时间:2021-03-26 00:07:25

标签: javascript reactjs react-redux redux-toolkit

代码沙盒:https://codesandbox.io/s/condescending-wiles-funk0?file=/src/App.js

问题:当我更新商店的状态时,不会重新渲染组件。在上面的例子中,你可以从控制台看到数据被正确获取,但组件没有重新渲染,只是继续渲染 python -m pip install beautifulsoup4

预期行为:当我更新状态时,组件会重新渲染。

我通过在组件中使用 useState 并订阅来存储如下更改找到了一种解决方法:

Loading...

这基本上会在每次更新数据时强制重新渲染。

我可以改变状态:在官方文档中他们说你可以改变状态,因为它有一些允许这样做的魔法(https://redux-toolkit.js.org/usage/usage-guide#simplifying-reducers-with-createreducer),因此这不是问题.

有人知道什么是使其工作的适当方法吗?

2 个答案:

答案 0 :(得分:2)

useStore docs 中,它指出不应在应用程序中使用钩子,因为它不会导致组件重新渲染:

<块引用>

// 仅示例!请勿在真实应用中执行此操作。

<块引用>

// store state 改变时组件不会自动更新

相反,您应该使用 useSelector

在那一点上,您的代码和框示例的方式会导致无限重新渲染,因为每次更新 redux 状态时都会调用 dispatch(fetchData());。相反,您需要将它放在 React.useEffect 内。

例如,将 useSelectoruseEffect 结合使用:

Edit Redux - useSelector

答案 1 :(得分:1)