我不明白我的组件Word将如何重新呈现。我的{history:{letters}}状态。所以问题是:如果将{letters}传递到useEffect deps数组中,如果更改{words}属性,组件Word是否会重新呈现?
`
function Word() {
const { history: {letters, words} } = useAppSelector(state => state)
useEffect(() => {
}, [letters])
return (
<div>
</div>
)
}
`
我希望我的组件只有在字母发生变化时才重新呈现。
2条答案
按热度按时间sg24os4d1#
您使用Redux维护一个状态。因此,如果组件本身使用的任何状态发生更改,组件将重新呈现。在您的示例中,如果
letters
或words
或两者都发生更改,Word
组件将重新呈现。这就是它的工作原理。顺便说一句,您的
useEffect
应该只在letters
中的任何更改时触发,因为您在其依赖数组中只包含了letters
。如果你想优化性能,你可以在任何需要的地方使用
useMemo
和useCallback
来记忆东西。正确地传递依赖关系,以便只在需要的状态改变时重新计算它们。y3bcpkx12#
如果状态的选定部分发生更改,UseSelector将重新呈现。您不必在useEffect上添加
[letters]
UseSelector订阅状态,如果检测到任何更改,它将调用
checkForUpdates
并且
checkForUpdates
检查状态的引用是否改变了,如果改变了,它调用forceRender
函数以便呈现组件。github使用选择器
useEffect
用于在组件首次呈现之前调度填充状态的操作,以便useSelector可以访问新填充的状态