私はReactで遊んでいますが、私が望む機能を得ていますが、どこか無限ループのため非常に遅いです。私はそれがコンポーネントのライフサイクルメソッドにあると信じていますが、以下のコードを同じ機能を持つように再フォーマットする方法はわかりませんが、無限ループはありません。ベストプラクティスに関するアドバイスをいただければ幸いです。React:Uncaught RangeError:最大呼び出しスタックサイズを超えました
class App extends Component {
constructor() {
super();
this.state = {
num: 13,
num2: 10,
total: 0
}
}
componentDidMount() {
this.addNums();
}
componentDidUpdate() {
this.addNums();
}
addNums(){
var added = parseInt(this.state.num) + parseInt(this.state.num2);
this.setState({total: parseInt(added)});
}
change(num) {
this.setState({num: num});
console.log(this.state);
}
change2(num2) {
this.setState({num2: num2});
console.log(this.state);
}
render(){
return (
<div>
<TopBar />
<Combinatoric test={this.state.num} changeNumber={this.change.bind(this)}/>
<Combinatoric test={this.state.num2} changeNumber={this.change2.bind(this)}/>
<h2>Total: {this.state.total}</h2>
<h1>hello world</h1>
</div>
);
}
}
'componentDidUpdate'は' '呼び出すaddNums'を呼び出すことができますコンポーネントの更新を引き起こすthis.setState'を返します。状態に 'total'を格納しないでください。' render'の中でいつでも正しく計算することができます。 – zerkms