在 React 应用程序中,更新数组或对象的状态可能很棘手。本文将引导您了解如何使用 setState 在状态中更新 state.item[1],这是 React 中的常见任务。
在提供的 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 中使用 `setState` 更新 `state.item[1]`?的详细内容。更多信息请关注PHP中文网其他相关文章!