我有錯誤maximum call stack size exceeded
。也許我以錯誤的方式理解componentDidUpdate
,但不應該它運行一次,而是1000.如何解決它?最大調用堆棧大小超過陣營 - 終極版
class App extends Component {
constructor(props) {
super(props);
this.state = {
amount: 0
}
}
updateAmout() {
let number = 0;
this.props.comments.map((comment, index) => {
if (comment.replyTo === null) {
number += 1;
this.setState({amount: number});
}
return null;
});
}
componentWillMount() {
this.updateAmout();
}
componentDidUpdate() {
this.updateAmout();
}
render() {
console.log(this.state.amount);
return (
<div className="comments-container">
<div id="comments">
<AddComment />
<div className="comments-flow">
<div className="comments-header">
<div className="pull-right">
<a href="" className="text-muted">Best</a> |
<a href="" className="active">Newest</a> |
<a href="" className="text-muted">Oldest</a>
</div>
<b>6 Comments</b>
</div>
<RenderComments />
</div>
<button className="btn btn-block">More...</button>
</div>
</div>
) // return
} // render
} // App
'componentWillMount'將強制進行更新,這將觸發'componentDidUpdate'這將再次強制更新等等。 – MinusFour
'componentDidUpdate()'是一個回調來通知您的狀態更新被成功完成。你不應該在這裏觸發另一個狀態更新。 –