我有一个简单的学生对象列表,其中包含名称和状态分数。
他们的名字是必然的<b>{student.name}</b>
,他们的分数是必然的
<input type="text" defaultValue={student.score}/>
每当我想从这个列表中删除第一个学生并通过调用 set state 重新渲染组件时。
第二个学生的输入标签显示第一个学生的分数,而不是自己的。为什么会在我做错的地方发生这种情况??
class App extends React.Component{
constructor(){
super();
this.state ={
students:[{name:"A",score:10},{name:"B",score:20},{name:"C",score:30}]
}
}
onDelete(index){
this.state.students.splice(index,1);
this.setState(this.state);
}
render(){
return(
<div>
{this.state.students.map((student,index)=>{
return(
<div key={index}>
<b>{student.name}</b> - <input type="text" defaultValue={student.score}/>
<button onClick={this.onDelete.bind(this,index)}>delete</button>
</div>
)
})}
</div>
)
}
}
ReactDOM.render(<App/>,document.getElementById("main"));