对于回忆录/性能考虑,使用useSelector with ShallowEqual。使用"Reselect/createSelector“选项进行性能优化会有更多的好处吗?还是这两种选择都一样?
大多数选择器都将数据作为JSON数组对象。
在编写新的选择器之前,希望考虑性能/回忆录的好处。
发布于 2021-09-21 19:06:17
// Example
const selectAndCompute = (state) => {/*expensive computation*/};
const MyComponent = (props) => {
const computedData = useSelector(selectAndCompute);
return '...';
}如果useSelector 函数计算的结果与上次被触发的结果相同(并且每当在redux状态下更改时,都会被触发),那么selectAndCompute将阻止MyComponent的重呈现。但是,这仍然需要selectAndCompute运行并计算一些结果。这种计算本身可能很昂贵。
因此,您可以添加reselect的createSelector来防止在selectAndCompute中完成的计算。例如,如果selectAndCompute仅依赖于状态state.transactions的一部分,则可以定义:
const selectAndCompute = createSelector(
[(state) => state.transactions],
(transactions) => {/*expensive computation*/}
);现在,只有当state.transactions更改了昂贵的计算时才会运行,否则selectAndCompute将立即返回前一个值。最后,useSelector将阻止重呈现,就像不使用reselect时一样。
https://stackoverflow.com/questions/66425991
复制相似问题