「setState」を使用して状態のネストされたオブジェクトを更新するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-04 03:34:30
オリジナル
266 人が閲覧しました

How to Update a Nested Object in State Using `setState`?

setState を使用して state の state.item[1] を更新します

この状況では、オブジェクト内のオブジェクトを更新しようとしていますsetState を使用して状態を設定します。状態を正しく更新するには、状態オブジェクト全体のコピーを作成し、そのコピーを変更して、更新されたコピーに状態を設定する必要があります。

次の方法で、state.item[1] を更新できます。 setState:

<code class="javascript">// 1. Make a shallow copy of the items
let items = [...this.state.items];

// 2. Make a shallow copy of the item you want to mutate
let item = {...items[1]};

// 3. Replace the property you're interested in
item.name = 'newName';

// 4. Put it back into our array. N.B. we *are* mutating the array here, 
//    but that's why we made a copy first
items[1] = item;

// 5. Set the state to our new copy
this.setState({items});</code>
ログイン後にコピー

必要に応じてステップ 2 と 3 を組み合わせることができます:

<code class="javascript">let item = {
    ...items[1],
    name: 'newName'
}</code>
ログイン後にコピー

または全体を実行することもできます1 行の内容:

<code class="javascript">this.setState(({items}) => ({
    items: [
        ...items.slice(0,1),
        {
            ...items[1],
            name: 'newName',
        },
        ...items.slice(2)
    ]
}));</code>
ログイン後にコピー

注: これらの例では、項目は配列であると仮定しました。項目がオブジェクトの場合は、オブジェクトのプロパティに対して同様の更新を行います。

setState を使用するときは、誤って変更しないように、変更する前に常に前の状態のコピーを作成する必要があることに注意してください。元の状態オブジェクト。

以上が「setState」を使用して状態のネストされたオブジェクトを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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