I'm making a webpage with react-monaco-editor. I realized that after loading the first page, componentDidUpdate
is triggered many times, which does not look normal.
I tried to add logs in componentDidUpdate
:
componentDidUpdate(prevProps, prevState) {
console.log("debugha, componentDidUpdate")
for (var key in prevProps) {
if (prevProps.hasOwnProperty(key)) {
if (prevProps[key] !== this.props[key]) {
console.log("debugha, componentDidUpdate, key", key, "prevProps[key]", prevProps[key]);
console.log("debugha, componentDidUpdate, key", key, "this.props[key]", this.props[key])
}
}
}
for (var key in prevState) {
if (prevState.hasOwnProperty(key)) {
if (prevState[key] !== this.state[key]) {
console.log("debugha, componentDidUpdate, key", key, "prevState[key]", prevState[key]);
console.log("debugha, componentDidUpdate, key", key, "this.state[key]", this.state[key])
}
}
}
... ...
... ...
Then, it prints the following logs. However, I don't see the difference of props or state.
Then, I tried to add logs as follows:
componentDidUpdate(prevProps, prevState) {
console.log("debugha, componentDidUpdate")
for (var key in prevProps) {
if (prevProps.hasOwnProperty(key)) {
if (prevProps[key] !== this.props[key]) {
console.log("debugha, componentDidUpdate, key", key, "prevProps[key]", prevProps[key]);
console.log("debugha, componentDidUpdate, key", key, "this.props[key]", this.props[key])
}
}
}
for (var key in prevState) {
if (prevState.hasOwnProperty(key)) {
if (prevState[key] !== undefined && this.state[key] !== undefined && prevState[key].toString !== this.state[key].toString) {
console.log("debugha, componentDidUpdate, key", key, "prevState[key]", prevState[key]);
console.log("debugha, componentDidUpdate, key", key, "this.state[key]", this.state[key])
}
}
}
Then, it prints the following logs. It shows that the toString
of props or state does not change.
So could anyone tell me how I could trace which props or state trigger componentDidUpdate
?