reactjs - 如何在 React 中更新数组中的状态变量?
问题描述
name
我有这种状态,我想以location
动态方式更新属性。
this.state = {
players: [{
name: '',
location: ''
},
{
name: '',
location: ''
}]
}
这个想法是您可以单击一个按钮来添加另一个/删除一个播放器。每个玩家,应该出现这些输入字段(我实现了),但我无法更新更改状态。
最好是这样的(但我无法使其适用于这种特殊情况)。当然,除非有更好的方法来实现这一点(我是 React 的新手)。
this.handleChange = (event) => { let obj = {...this.state.obj }; obj [event.target.name] = event.target.value; this.setState({obj }); }
任何帮助将不胜感激!
解决方案
您可以将临时 id 值添加到播放器列表中,并在更改时传递目标 id 和字段更改,并相应地更改状态
const onPlayerChange = ({target : { id , name , vlaue}}) =>{
const newPlayersState = this.state.players.map(player=>{
if(player.id === id) return {...player,[name]:value}
return player;
})
this.setState({players:newPlayersState})
}
推荐阅读
- go - 使用缓冲区的 csv 编写器导致空输出
- python - 绘图区域中的图例重叠
- jquery - 使用Angular 6进行routerlink重定向后如何关闭Bootstrap模式
- django - Django REST Framework 创建和更新嵌套对象
- python - 熊猫数据框列中行的数学运算
- objective-c - 如何将 Metal Performance Shader 与 MTLBlitCommandEncoder 同步?
- c# - 如何将一个 int 元素与一个列表 int 进行比较
- c# - Unity 3D 无法在 Windows 上的窗口模式下更改分辨率
- reactjs - 组件未更新 React/Redux
- fish - 鱼壳可以处理 if 语句中的 if 语句吗?