ホームページ > ウェブフロントエンド > jsチュートリアル > React で深くネストされた状態プロパティを効率的に更新するにはどうすればよいですか?

React で深くネストされた状態プロパティを効率的に更新するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-27 02:36:10
オリジナル
939 人が閲覧しました

How Can I Efficiently Update Deeply Nested State Properties in React?

ネストされたプロパティを使用した React のディープ ステート更新

React で状態を管理する場合、より適切に組織化するためにデータをネストされたプロパティに整理するのが一般的です。ただし、深くネストされた状態プロパティを直接更新すると、意図しない結果が生じる可能性があります。

問題:

次の状態構造を考えてみましょう:

this.state = {
   someProperty: {
      flag: true
   }
}
ログイン後にコピー

このアプローチを使用して状態を更新する:

this.setState({ someProperty.flag: false });
ログイン後にコピー

... としては機能しません。意図した。 React の setState メソッドは、ネストされた更新を処理しません。

解決策: クローン作成と更新

1 つの解決策は、ネストされたプロパティをクローンし、更新を実行し、更新されたプロパティを設定することです。状態のプロパティ:

var someProperty = {...this.state.someProperty}
someProperty.flag = false;
this.setState({someProperty})
ログイン後にコピー

スプレッド演算子 (...) はオブジェクトの浅いコピーを作成します。ただし、状態が深くネストされると、このアプローチは退屈でエラーが発生しやすくなる可能性があります。

不変ヘルパー

より複雑なネストされた状態の更新については、不変ヘルパーの使用を検討してください。 -ヘルパーパッケージ。これは、元の状態が変更されないように、ネストされたオブジェクトを不変に更新する便利な方法を提供します。

たとえば、immutability-helper を使用して深くネストされたプロパティを更新するには:

this.setState(({someProperty}) => {
   return update(someProperty, { $set: { flag: false } })
})
ログイン後にコピー

Immutability -helper は、元の someProperty オブジェクトが変更されないようにしますが、代わりに、更新されたフラグ プロパティを持つ新しいオブジェクトが返されるようにします。

以上がReact で深くネストされた状態プロパティを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート