删除元素,不要直接操作state里面的值,需要把要更改的值复制一份。 所以使用展开操作符,把数组复制一遍。
import React ,{Component} from 'react' class App extends Component{ constructor(props){ super(props) this.state = { list:["星期一","星期二","星期三"], inputValue:"" } } render(){ return( <div> { this.state.list.map((ele,index)=>{ // 把index传入 return <p key={index} >{ele}<button onClick={this.del.bind(this,index)}>删除</button></p> }) } <input type="text" value={this.state.inputValue} onChange={this.change.bind(this)}/> <button onClick={this.add.bind(this)}>添加</button> </div> ) } change(e){ this.setState({ inputValue:e.target.value }) } add(){ this.setState({ list:[...this.state.list,this.state.inputValue], inputValue:"" }) } del(index){ //展开数组 var list = [...this.state.list] //删除元素 list.splice(index,1) this.setState({ list:list }) } } export default App;