redux 过滤选择器使组件多次重新渲染[关闭]

41zrol4v  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(86)

已关闭。此问题需要details or clarity。它目前不接受回答。
**希望改进此问题?**通过editing this post添加详细信息并阐明问题。

昨天关门了。
Improve this question
使用时我注意到:

const sectorsSelector = state => state.sectors

字符串
使make组件呈现一次,但使用此选项,会将组件重新呈现8次以上

const sectorsSelector = state =>
  state.sectors && state.sectors.filter(d => !d.deleted)


有什么区别呢?为什么最后一个例子会使组件重新渲染这么多次?我的减速器如下所示:

switch (type) {
    case SECTORS.loadSuccess:
      return payload.sectors.sort((a, b) => a.index - b.index)
    default:
        return state
}


我使用以下命令调用组件中的选择器:

const sectors = useSelector(sectorsSelector)

irlmq6kh

irlmq6kh1#

我相信useSelector在每次存储调度时都会对以前读取的值与当前值进行比较。
由于Array.filter()每次都返回一个新的数组,因此浅层比较将触发组件上的重新呈现
从redux-toolkit导出的createSelector函数解决了这个问题

相关问题