React アプリケーションでは、配列またはオブジェクトの状態を更新するのは難しい場合があります。この記事では、React の一般的なタスクである setState を使用して状態の state.item[1] を更新する方法について説明します。
提供された React コンポーネント内で、目標はユーザーが独自のフィールドを設計できる動的なフォーム。状態は最初は次のようになります:
this.state.items[1] = { name: 'field 1', populate_at: 'web_start', same_as: 'customer_name', autocomplete_from: 'customer_name', title: '' };
ユーザーがいずれかの値を変更したときに状態を更新しようとすると、問題が発生します。正しいオブジェクトをターゲットにすることが困難になります。
状態を正しく更新するには、次の手順に従います:
実装例:
handleChange: function (e) { // 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 intested 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}); }
代替実装:
let item = {...items[1], name: 'newName'}
this.setState(({items}) => ({ items: [ ...items.slice(0, 1), {...items[1], name: 'newName'}, ...items.slice(2) ] }));
以上がReact で `state.item[1]` を `setState` で更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。