Laut den Dokumenten:
componentDidUpdate()
wird sofort nach der Aktualisierung aufgerufen. Diese Methode wird beim ersten Rendern nicht aufgerufen.
Wir können den neuen useEffect()
Hook zum Simulieren verwenden componentDidUpdate()
, aber es scheint, useEffect()
als würde er nach jedem Rendern ausgeführt, sogar beim ersten Mal. Wie kann ich erreichen, dass es beim ersten Rendern nicht ausgeführt wird?
Wie Sie im folgenden Beispiel sehen können, componentDidUpdateFunction
wird es beim ersten Rendern componentDidUpdateClass
gedruckt , wurde jedoch beim ersten Rendern nicht gedruckt.
function ComponentDidUpdateFunction() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
console.log("componentDidUpdateFunction");
});
return (
<div>
<p>componentDidUpdateFunction: {count} times</p>
<button
onClick={() => {
setCount(count + 1);
}}
>
Click Me
</button>
</div>
);
}
class ComponentDidUpdateClass extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0,
};
}
componentDidUpdate() {
console.log("componentDidUpdateClass");
}
render() {
return (
<div>
<p>componentDidUpdateClass: {this.state.count} times</p>
<button
onClick={() => {
this.setState({ count: this.state.count + 1 });
}}
>
Click Me
</button>
</div>
);
}
}
ReactDOM.render(
<div>
<ComponentDidUpdateFunction />
<ComponentDidUpdateClass />
</div>,
document.querySelector("#app")
);
<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script>
<div id="app"></div>
count
?