javascript - 更新状态数组
问题描述
我试图在将其作为道具传递给另一个组件之前更新状态中的名称对象。
// some code above
this.state = {
// some other states
playerName: {
player1Name: 'Default Player 1 Name',
player2Name: 'Default Player 2 Name',
player3Name: 'Default Player 3 Name'
}
};
this.nameChange = this.nameChange.bind(this);
nameChange(e){
this.setState( prevState => ({
playerName: {
...prevState.playerName,
[e.target.id]: e.target.value
}
})
}
render(){
return(
<div>
<input type='name' id='player1Name' onChange={this.nameChange}/>
<input type='name' id='player2Name' onChange={this.nameChange}/>
<input type='name' id='player3Name' onChange={this.nameChange}/>
</div>
)
}
但是,它返回无法读取 null 的 'id' 和 null 的 'value' 的错误
解决方案
你需要使用name
ininput
和e.target.name
in handler
。请检查这个例子:
import React from "react";
export default class PlayerName extends React.Component {
state = {
// some other states
playerName: {
player1Name: 'Default Player 1 Name',
player2Name: 'Default Player 2 Name',
player3Name: 'Default Player 3 Name'
}
};
nameChange = (e) => {
const name = e.target.name;
const value = e.target.value;
this.setState(prevState => ({
playerName: {
...prevState.playerName,
[name]: value
}
}));
console.log( this.state);
};
render() {
return (
<div>
<input type='name' name='player1Name' onChange={this.nameChange}/>
<input type='name' name='player2Name' onChange={this.nameChange}/>
<input type='name' name='player3Name' onChange={this.nameChange}/>
</div>
)
}
}
推荐阅读
- accessibility - WCAG 2.0 AA 要求链接和周围文本之间的颜色对比度为 3:1?
- autodesk-forge - Autodesk Forge Viewer - 放大比例
- python - python/flask 应用程序码头化期间的问题
- flutter - 将 Dart 中的地图更新到 Firestore
- c# - 如何检查可空 int 类型的查询字符串是否无效?
- c# - #c 异步 MySqlConnector
- javascript - v-tab-item 内容上的引用在挂载的钩子中为空
- r - 如何在R中将字符串双精度转换为数字双精度?
- c# - Newtonsoft JConverter
读取对象或数组 (oneOf) - celery - 芹菜只在给定的时间范围内运行任务