删除元素,不要直接操作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;