[英]React Hook "useCustomHook" is called conditionally. React Hooks must be called in the exact same order in every component render
[英]React Hooks: conditionally render a component but with access to the whole state
假设我的 state 由 object 表示,如下所示:
state = {
array: [1, 2, 3, 4, 5]
}
我知道我是否使用:
const state = useSelector(state => state.array)
每次数组的元素之一发生更改时,我的组件都会重新渲染,但我不想要它。 因此,解决方案可以是:
state = {
render: false,
array: [1, 2, 3, 4, 5]
}
现在我可以:
const state = useSelector(state => state.render)
并通过有条件地调度一些动作来处理渲染。 但是这样我就无法再访问数组了。 这里的问题是,在我的项目中,每次数组更新时都需要重新渲染的组件,以及仅在特定情况下需要重新渲染的组件。 另一种解决方案是只为很少需要重新渲染的组件创建另一个商店,但这对我来说似乎太有线了。
useSelector
接受第二个参数equlityFn
:
const result: any = useSelector(selector: Function, equalityFn?: Function)
如果equlityFn
返回true
,订阅更新将不准确,因此渲染不会来自选择器。
const state = useSelector(
(state) => state.array,
(prevState, currState) => {
return isRender(currState);
}
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.