对于一个项目,我们希望在应用程序的所有视图中都显示通知。
侧边栏菜单允许用户在视图之间移动,并且与通知组件和Websocket组件react-stomp处于同一级别。路由器用于根据所选菜单项在下一级更改视图。
我们的问题是,如果有新消息到达,我们需要将其作为道具传递给视图,当然这会触发整个组件的重新渲染。
有办法避免这种重新渲染吗?
尽管我们知道这是一个可能的解决方案,但我们还是希望避免Redux。
答案 0 :(得分:3)
默认情况下,如果道具更改反应将触发重新渲染。如果要避免呈现组件网,可以使用钩子shouldComponentUpdate(nextProps, nextState)
引用React的文档:
使用shouldComponentUpdate()来让React知道组件的输出是否不受当前状态或道具更改的影响。默认行为是在每次状态更改时重新呈现,并且在大多数情况下,您应该依赖默认行为。
如需进一步阅读,请访问their docs
答案 1 :(得分:1)
您是否尝试过尝试使用生命周期事件挂钩?
答案 2 :(得分:0)
如果要避免使用Redux或MobX之类的状态管理器,可以使用REACT CONTEXT
API