为什么 shouldComponentUpdate 钩子在 React 中不起作用?
Why shouldComponentUpdate hook is not working in React?
我已经开始学习 react.js
并且在它的生命周期中,我得到了这个 shouldComponentUpdate
方法。在 return 中,我超过了 false
,它仍然影响 dom。在我的参考视频中,它不会影响 dom。
以上渲染()
shouldComponentUpdate ( nextProps, nextState ) {
console.log( 'In shouldComponentUpdate', nextProps, nextState );
return false;
}
我正在使用这个版本:"react": "^16.9.0",
shouldComponentUpdate
生命周期在每个组件渲染时启动。
在你的例子中,如果你想让它记录一些东西,你需要通过它的父亲渲染组件(渲染父亲所以它渲染它的children)或通过自我渲染,例如改变它的状态:
export default class App extends React.Component {
state = { counter: 0 };
shouldComponentUpdate(nextProps, nextState) {
console.log('In shouldComponentUpdate', nextProps, nextState);
return false;
}
render() {
return (
<FlexBox>
<Button onClick={() => this.setState({ counter: this.counter + 1 })}>
Counter
</Button>
</FlexBox>
);
}
}
在更新期间,shouldComponentUpdate
在渲染方法之前被调用。它告诉组件是否需要重新渲染。如果 shouldComponentUpdate
return 为 false,则不会重新渲染组件。
在你的情况下,
shouldComponentUpdate ( nextProps, nextState ) {
console.log( 'In shouldComponentUpdate', nextProps, nextState );
return false;
}
console.log
被触发,但由于您 returning false,此后组件将不会重新呈现。
您可以从此处的示例中查看:
当您在 componentShouldUpdate
中 return 为 false 时,计数不会增加,而当您 return 为 true 时,计数不会增加。
我已经开始学习 react.js
并且在它的生命周期中,我得到了这个 shouldComponentUpdate
方法。在 return 中,我超过了 false
,它仍然影响 dom。在我的参考视频中,它不会影响 dom。
以上渲染()
shouldComponentUpdate ( nextProps, nextState ) {
console.log( 'In shouldComponentUpdate', nextProps, nextState );
return false;
}
我正在使用这个版本:"react": "^16.9.0",
shouldComponentUpdate
生命周期在每个组件渲染时启动。
在你的例子中,如果你想让它记录一些东西,你需要通过它的父亲渲染组件(渲染父亲所以它渲染它的children)或通过自我渲染,例如改变它的状态:
export default class App extends React.Component {
state = { counter: 0 };
shouldComponentUpdate(nextProps, nextState) {
console.log('In shouldComponentUpdate', nextProps, nextState);
return false;
}
render() {
return (
<FlexBox>
<Button onClick={() => this.setState({ counter: this.counter + 1 })}>
Counter
</Button>
</FlexBox>
);
}
}
在更新期间,shouldComponentUpdate
在渲染方法之前被调用。它告诉组件是否需要重新渲染。如果 shouldComponentUpdate
return 为 false,则不会重新渲染组件。
在你的情况下,
shouldComponentUpdate ( nextProps, nextState ) {
console.log( 'In shouldComponentUpdate', nextProps, nextState );
return false;
}
console.log
被触发,但由于您 returning false,此后组件将不会重新呈现。
您可以从此处的示例中查看:
当您在 componentShouldUpdate
中 return 为 false 时,计数不会增加,而当您 return 为 true 时,计数不会增加。