【问题标题】:React avoid re-render反应避免重新渲染
【发布时间】:2018-12-16 11:08:52
【问题描述】:

对于一个项目,我们希望通知在应用程序的所有视图中都可见。

侧边栏菜单允许用户在视图之间移动,并且与通知组件和websocket组件react-stomp处于同一级别。路由器用于根据所选菜单项更改下一级的视图。

我们的问题是,如果有新消息到达,我们需要将其作为道具传递给视图,当然这会触发整个组件的重新渲染。

有没有办法避免这种重新渲染?

我们希望避免使用 redux,尽管我们知道这是一种可能的解决方案。

【问题讨论】:

    标签: javascript reactjs websocket stomp spring-websocket


    【解决方案1】:

    默认情况下,如果 props 发生变化,react 会触发重新渲染。如果你想避免渲染组件,你可以使用钩子shouldComponentUpdate(nextProps, nextState)

    引用 React 的文档:

    使用 shouldComponentUpdate() 让 React 知道组件的输出是否不受当前状态或道具变化的影响。默认行为是在每次状态更改时重新渲染,在绝大多数情况下,您应该依赖默认行为。

    更多阅读请访问their docs

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 react 生命周期事件挂钩?

      【讨论】:

      • 不是很熟悉,现在去看看!
      【解决方案3】:

      如果你想避免使用像 Redux 或 MobX 这样的状态管理器,你可以使用 REACT CONTEXT API

      【讨论】:

      • 但这仍然会导致重新渲染
      • 是的,我知道我正在尝试就问题的另一部分提出解决方案,即如何将数据从顶级组件提供给其他部分,但是就像其他人建议的那样,他们可以使用生命周期挂钩或扩展PureComponent
      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 2021-03-12
      • 2018-12-21
      • 2022-01-25
      • 2018-12-24
      • 2020-12-21
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多