Javascript React shouldComponentUpdate()=false不停止重新渲染

Javascript React shouldComponentUpdate()=false不停止重新渲染,javascript,reactjs,Javascript,Reactjs,基本上,我有一个非常简单的反应组件。它所做的是环绕“react intercom”,仅在状态发生变化时渲染它。为了简化问题,我将shouldcomponentupdate()方法硬连接为始终返回false 从“React”导入React; 从“反应对讲机”导入对讲机; 类包装器扩展了React.Component{ shouldComponentUpdate(下一步,下一步状态){ //console.log(!!nextrops.user&&nextrops.user.userId!==th

基本上,我有一个非常简单的反应组件。它所做的是环绕“react intercom”,仅在状态发生变化时渲染它。为了简化问题,我将
shouldcomponentupdate()
方法硬连接为始终返回false

从“React”导入React;
从“反应对讲机”导入对讲机;
类包装器扩展了React.Component{
shouldComponentUpdate(下一步,下一步状态){
//console.log(!!nextrops.user&&nextrops.user.userId!==this.props.user.userId);
//return!!nextrops.user&&nextrops.user.userId!==this.props.user.userId;
返回false;
}
render(){
console.log('rendering');
返回;
}
};

导出默认包装器这不会阻止子组件的呈现:
从:

返回false不会阻止子组件重新渲染 当他们的状态改变时。

请注意,将来React可能会将shouldComponentUpdate()视为 提示而不是严格的指令,返回false仍然可能 导致组件的重新渲染


我最终找到了答案:问题是包装组件正在接收状态更改,并且正在无条件地重新提交所有子项(这是正常行为。这是一个重新排列组件的问题(从我的
组件中取出这个对讲机包装器)。感谢大家的帮助!干杯!

如果Intercom组件在IntercoWrapper没有呈现时呈现(因为shouldComponentUpdate设置为false),这意味着Intercom组件独立于从其父级传递的{…this.props}侦听数据更改(例如,它可以订阅存储)


我也遇到了同样的问题,子组件在其父组件未呈现时呈现,因为shouldComponentUpdate设置为false。原因是-子组件已订阅存储并独立于父组件侦听数据更改。

将console.log添加到
componentDidMount
componentWillUpdate
componentdiddupdate查看它们中的哪一个正在启动。如果组件正在卸载,则应重新安装ComponentUpdate将不起作用