首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useSelector和重新选择哪一个对性能有利

useSelector和重新选择哪一个对性能有利
EN

Stack Overflow用户
提问于 2021-03-01 16:35:02
回答 1查看 5.1K关注 0票数 7

对于回忆录/性能考虑,使用useSelector with ShallowEqual。使用"Reselect/createSelector“选项进行性能优化会有更多的好处吗?还是这两种选择都一样?

大多数选择器都将数据作为JSON数组对象。

在编写新的选择器之前,希望考虑性能/回忆录的好处。

EN

回答 1

Stack Overflow用户

发布于 2021-09-21 19:06:17

代码语言:javascript
复制
// Example
const selectAndCompute = (state) => {/*expensive computation*/};

const MyComponent = (props) => {
   const computedData = useSelector(selectAndCompute);
   return '...';
}

如果useSelector 函数计算的结果与上次被触发的结果相同(并且每当在redux状态下更改时,都会被触发),那么selectAndCompute将阻止MyComponent的重呈现。但是,这仍然需要selectAndCompute运行并计算一些结果。这种计算本身可能很昂贵。

因此,您可以添加reselectcreateSelector来防止在selectAndCompute中完成的计算。例如,如果selectAndCompute仅依赖于状态state.transactions的一部分,则可以定义:

代码语言:javascript
复制
const selectAndCompute = createSelector(
  [(state) => state.transactions], 
  (transactions) => {/*expensive computation*/}
);

现在,只有当state.transactions更改了昂贵的计算时才会运行,否则selectAndCompute将立即返回前一个值。最后,useSelector将阻止重呈现,就像不使用reselect时一样。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66425991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档