javascriptオブジェクトを追加/プッシュしようとしています(この 'セッション'としましょう)this.state.sessions。ネストされたオブジェクトをプッシュするときに反応状態が変化する
私はこの二つの方法を試みた:浅いデータ(例えばsessions[i].location
ながら
var newState = React.addons.update(this.state, {
sessions : {
$push : [session]
}
});
this.setState(newState);
のリアクト不変ヘルパーを使用して)
this.setState({sessions: this.state.sessions.concat(session)});
2新しいセッションをConcat'ing
1))が正しく追加されている場合、問題はすべての以前のセッションのスコープが新しいsession.scopeに設定されていることです。下の画像リンクでは、最初のセッションのスコープ値(sessions[0].scope
)が、2番目のセッションのスコープ値(sessions[1].scope
)によって上書きされたことがわかります。新しいセッションを追加する際に、以前のセッションの値に影響を与えないようにするにはどうすればよいですか?
addSession = (newSession) => {
let tempArray = this.state.sessions.slice();
tempArray.push(newSession);
this.setState({sessions: tempArray});
}
上記sessions
配列のシャローコピーを作成し、一時的な変数に代入します:sessions
以来
私は答えとしてこれをマークしています。元のコードベースでこの問題を解決していませんが、私は単純なアプリケーション(まだ子コンポーネントがある)とスコープの更新を期待どおりに作成しました。 – Kunal