Javascript 使用onClick时,将输入值反应为数组不工作
我有一个数组,我想从用户的输入中添加一个新名称。在我的组件中,我有:Javascript 使用onClick时,将输入值反应为数组不工作,javascript,arrays,reactjs,ecmascript-6,Javascript,Arrays,Reactjs,Ecmascript 6,我有一个数组,我想从用户的输入中添加一个新名称。在我的组件中,我有: <div> <h4>Add A Player</h4> <input type="text" placeholder="Enter a new name" value={this.state.newPlayerName} /> <button onClick={this.handleAddPlayer}> Press
<div>
<h4>Add A Player</h4>
<input
type="text"
placeholder="Enter a new name"
value={this.state.newPlayerName}
/>
<button onClick={this.handleAddPlayer}>
Press to Add Player
</button>
</div>
我试图获取当用户输入一个名称并提交它时,它会在更新数组的函数中更新(如果这有意义,请道歉,因为这对我来说还是很新的)
在我的州,我有:
this.state = {
id: players.id,
totalScore: 0,
countInfo: [],
evilName: '',
color: '#6E68C5',
scoreColor: '#74D8FF',
fontAwe: 'score-icon',
incrementcolor: '',
scoreNameColor: 'white',
glow: '',
buttonStyle: 'count-button-start',
newPlayerName: '',
players
};
我不知道如何让输入将名称(或字符串)传递给数组,有人能帮忙吗?首先,您将绑定输入更新处理程序添加到了错误的元素!您当前已将其连接到按钮,您必须将其连接到输入!在输入中添加
onChange
处理程序,以便在每次更改输入时更新值:
<input
type="text"
placeholder="Enter a new name"
value={this.state.newPlayerName}
onChange={this.handleChange}
/>
这将让React控制输入,并将输入值设置为state,以便在添加新播放器时使用它。然后,设置处理程序以在单击时添加新的播放器。不用切片、推送、重置,只需使用数组排列语法:
handleAddPlayer = e => {
this.setState(prevState => ({
players: [...prevState.players, {
name: this.state.newPlayerName
id: getRandomInt(20, 55)
}]
}));
}
这将players
设置为前一状态的players
属性加上带有名称的新player对象,该名称是输入值和随机id
handleChange = e => {
this.setState({
newPlayerName: e.target.value
});
}
handleAddPlayer = e => {
this.setState(prevState => ({
players: [...prevState.players, {
name: this.state.newPlayerName
id: getRandomInt(20, 55)
}]
}));
}