刪除元素,不要直接操做state裏面的值,須要把要更改的值複製一份。 因此使用展開操做符,把數組複製一遍。javascript
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;