は、私はそうのようなコンポーネントの状態を初期化するとしましょう:私はちょうど私が以下であったと言われたそれらのいずれかの状態を変更したい場合は、ReactでsetState()を省略することはできますか?
getInitialState: function(){
return {name: "Bob Smith",
phone: "555-555-5555",
location: "San Francisco, CA",
best-friend: "Bill Jacobson",
favorite-color: "Orange"}
},
無無ありません:
this.state.name = "John Smith";
むしろ私が使用する必要があります。
this.setState({name: "John Smith",
phone: this.state.phone,
location: this.state.location,
best-friend: this.state.best-friend,
favorite-color: this.state.favorite-color});
これを行うには、より効率的な方法があるに違いありません。私の状態オブジェクトのただ1つのプロパティを、反応するのに安全な方法で変更する簡潔な方法はありますか?
でこれが唯一のトップレベルの状態のために働くことに注意してください。ネストされた状態でこれを行うことはできません。 – jaybee
これは完璧なおかげです!好奇心の理由から、なぜFacebookはこれを好きではないのですか?this.state.name = newValueを使用するのが慣習ではないのですか? 編集:私はドキュメントの20行をスクロールダウンして、これだけ自分自身に答えました!元の答えをありがとう。 – FactorialTime
@EllDoubleYew変更が非常に簡単に失われる可能性があるためです。 Reactがあなたのために行う内部コンポーネント状態管理と、あなたにさらされているすべてのコンポーネントライフサイクルメソッドは、直接的な外部値設定とうまく連携しません。これは、Reactが不変のデータ構造と関連している理由の1つであり、なぜFluxアーキテクチャが完全な(Flux、Redux、または他の実装であれ)大きな画像に適合するのかです。 –