reactjs - react 样板 : Dumb components re-render when the data in

标签 reactjs redux reselect react-boilerplate

我有一个用过的react-boilerplate来为我的项目设置基础。假设我有一个容器和 2 个组件(dumb组件),如下所示,

App
  - HomePage(Connected component with sidebarData and detailedData)
     - SideBar(data=sidebarData)
     - DetailedView(data=detailedData)
State
  {
    "sidebarData": makeSelectorSideBarData(), // reselect selector
    "detailedData": makeSelectorDetailedViewData(), // reselect selector
  }

很明显,子组件取决于单独的数据。但是当我的 detailedData 发生变化时,它也会重新渲染 SideBar 组件。

有没有办法使用 redux/reselect 来避免这种情况,而不实现 shouldComponentUpdate()

最佳答案

如果您不希望组件在指定的 props 更改之前重新渲染,您可以使用 PureComponent 。只需确保您知道浅层 prop 和状态比较足以满足您的用例:

PureComponent’s shouldComponentUpdate() only shallowly compares the objects. If these contain complex data structures, it may produce false-negatives for deeper differences

关于reactjs - react 样板 : Dumb components re-render when the data in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429978/

相关文章:

javascript - 如何使用 Material ui 自动完成功能进行搜索?

reactjs - React Router v4 重定向到当前页面并且组件消失

javascript - 嵌套路由错误(react-router)

javascript - 使用输入更新 reactjs 中的 redux 状态

Reselect Redux 函数返回的 TypeScript 类型?

javascript - 如何在 ReactJs 中渲染口音?

javascript - react native + Redux : Why the error "should not push route with duplicated key"?

reactjs - 如何在 createSlice reducer 中使用调度?

typescript - 如何在带有 TypeScript 的 redux 应用程序中使用选择器?

javascript - Typescript 编译器为 Reselect.createSelector() 生成错误的返回类型