反应 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
位 :-
如果我得到相同的值,如何停止渲染?我应该为此写一些条件吗?喜欢
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
位 :-