反应 redux 工具包。如果我得到相同的值,如何停止渲染?

React redux toolkit. How to stop render If I get the same value?

如果我得到相同的值,如何停止渲染?我应该为此写一些条件吗?喜欢

  if (JSON.stringify(state) === JSON.stringify(payload) {
    return state
  }
return payload

这是一个完整的例子

https://codesandbox.io/s/return-redux-toolkit-ersqo?file=/src/redux/slices/slice.js

这里是部分代码

const someSlice = createSlice({
  name: "someSlice",
  initialState: {},
  reducers: {
    actionSuccess: (state, { payload }) => payload
  }
});

您可以使用 useSelector 的第二个参数,它是一个 equalityFn.

您可以从 react-redux 导入 shallowEqual 并将其作为第二个参数传递给 useSelector。同样,这只会进行浅层比较。您可以使用自己的自定义函数或任何库函数进行深度比较,并将其作为第二个参数传递给 useSelector.

我已经分叉了你的 codesandbox 来展示 shallowEqual 位 :-

https://codesandbox.io/s/return-redux-toolkit-forked-wtewy