reactjs – 删除项目后反应列表呈现错误数据
发布时间:2020-12-15 05:05:59 所属栏目:百科 来源:网络整理
导读:我有一个简单的学生对象列表,其中包含姓名和状态分数. 他们的名字绑定到 b {student.name} / b他们的分数必然会 input type="text" defaultValue={student.score}/ 什么时候我想从这个列表中删除第一个学生 通过调用set state重新呈现组件 第二个学生的输入
我有一个简单的学生对象列表,其中包含姓名和状态分数.
他们的名字绑定到< b> {student.name}< / b>他们的分数必然会 <input type="text" defaultValue={student.score}/> 什么时候我想从这个列表中删除第一个学生 第二个学生的输入标签显示第一个学生的分数而不是自己的分数.为什么这会发生在我做错的地方? 这是我的代码here is mycode in jsbin 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"));
这是因为你使用key = {index}而不是学生唯一的值.
当数组被修改后,删除索引后的学生将使用错误的密钥,并且React将不会注册密钥更改以使用更新的数据重新呈现. 你应该改用这样的东西…… <div key={student.name}> 假设student.name是唯一的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |