使用useReducer()
挂钩从redux状态提取特定值是否安全,如下所示:
const {item1, item2, item3} = useSelector(state => state);
或者这会引起问题(关于重新发布者和州(,或者被视为不良做法?
您应该永远不要从选择器返回整个state
根据文档,useSelector
在分派后选择器返回值发生任何变化时都会重新呈现。因此,重要的是,对useSelector
的每次调用都应返回该组件所需的尽可能小的状态。
在这种情况下,最好的选择是三个单独的useSelector
调用,每个调用返回一个字段,或者一个useSelector
调用,只提取这些字段并返回它们。但是,由于返回新的对象引用会导致重新渲染,因此在一起返回这些字段时,需要使用shallowEqual
比较函数或记忆选择器函数来避免不必要的重新渲染。