Redux useSelector如何影响React组件渲染?

b5buobof  于 2022-11-24  发布在  React
关注(0)|答案(2)|浏览(297)

我不明白我的组件Word将如何重新呈现。我的{history:{letters}}状态。所以问题是:如果将{letters}传递到useEffect deps数组中,如果更改{words}属性,组件Word是否会重新呈现?
`

function Word() {
  const { history: {letters, words} } = useAppSelector(state => state)

  useEffect(() => {
    
  }, [letters])

  return (
    <div>
      
    </div>
  )
}

`
我希望我的组件只有在字母发生变化时才重新呈现。

sg24os4d

sg24os4d1#

您使用Redux维护一个状态。因此,如果组件本身使用的任何状态发生更改,组件将重新呈现。在您的示例中,如果letterswords或两者都发生更改,Word组件将重新呈现。这就是它的工作原理。
顺便说一句,您的useEffect应该只在letters中的任何更改时触发,因为您在其依赖数组中只包含了letters
如果你想优化性能,你可以在任何需要的地方使用useMemouseCallback来记忆东西。正确地传递依赖关系,以便只在需要的状态改变时重新计算它们。

y3bcpkx1

y3bcpkx12#

如果状态的选定部分发生更改,UseSelector将重新呈现。您不必在useEffect上添加[letters]
UseSelector订阅状态,如果检测到任何更改,它将调用checkForUpdates

subscription.onStateChange = checkForUpdates

并且checkForUpdates检查状态的引用是否改变了,如果改变了,它调用forceRender函数以便呈现组件。
github使用选择器
useEffect用于在组件首次呈现之前调度填充状态的操作,以便useSelector可以访问新填充的状态

相关问题