gpt4 book ai didi

reactjs - 有没有办法速记 useSelector 而不是导致不必要的渲染?

转载 作者:行者123 更新时间:2023-12-05 05:40:37 26 4
gpt4 key购买 nike

考虑这两个调用

const loading = useSelector((state) => state.example.loading); 
const { loading } = useSelector((state) => state.example);

const { loading } = useSelector((state) => state.example); 会使组件在示例切片中的其他变量发生变化时导致不必要的渲染。这一个 const loading = useSelector((state) => state.example.loading); 不会因为它只获取 loading 变量。

在我正在清理的一个应用程序中,一个小组成员写了 const { var1, var2, var3....var50 } = useSelector((state) => state.example); 和它会在整个应用程序中造成不必要的渲染。而不是重写

const var1 = useSelector((state) => state.example.var1);
const var2 = useSelector((state) => state.example.var2);
...

有没有办法在不引起渲染的情况下简写这个?

Playground 示例:

https://codesandbox.io/s/cool-dew-7pfclw?file=/src/Header.js

最佳答案

是也不是。您可以创建一个包含您实际需要的所有值的对象,然后使用与您的缩减器进行浅比较以确保它不会过于频繁地重新呈现。

它的代码可能更少,但老实说我不确定它是否更具可读性。

您还可以使用代理查看其他选择器库以跟踪何时更新。 there are some alternative candiates mentioned in the redux docs ,您可能对 proxy-memoize 感兴趣。

关于reactjs - 有没有办法速记 useSelector 而不是导致不必要的渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72372144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com