を反応させるのチュートリアルをReactJS:React.js Introduction For People Who Know Just Enough jQuery To Get Byは、エラー「既存の状態遷移時に更新できません。」私は、このステップ15をやろうとしている
著者は次のことをお勧めします。
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
return (
<div className="alert alert-warning">
<strong>Oops! Too Long:</strong>
</div>
);
} else {
return "";
}
},
render() {
...
{ this.overflowAlert() }
...
}
私がやってみました(私には大丈夫に見えた)次
// initialized "warnText" inside "getInitialState"
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
this.setState({ warnText: "Oops! Too Long:" });
} else {
this.setState({ warnText: "" });
}
},
render() {
...
{ this.overflowAlert() }
<div>{this.state.warnText}</div>
...
}
そして私はクローム開発ツールでコンソールに次のエラーを受け取った:
既存の状態遷移中に更新できません(
render
または他のコンポーネントのコンストラクタ内など)。レンダリング方法は、小道具と国家の純粋な機能である でなければなりません。コンストラクタの副作用は パターンですが、componentWillMount
に移動することができます。
ここにはJSbin demoがあります。なぜ私のソリューションは動作しませんし、このエラーはどういう意味ですか?
考えてみましょう:状態が更新されるとコンポーネントが再レンダリングされるので、レンダリングメソッドで状態を更新すると無限ループになります。ここで何を達成しようとしていますか?誰かがテキストなどを入力するたびに状態を更新します。 – Li357
@AndrewLi Lucid答え。先に進んで答えとして提出すれば、正しいとマークします。私はここで達成しようとしているもの:私は解決策を見ずに私自身のやり方をしようとしていた、これは私が思いついたものでした。 –