尽量不要直接修改state中的数据,如:
this.state.list.splice(xxx) this.setState({ list:this.state.list })
这样做确实可以生效,但应该遵循immutable的原则而尽量避免直接修改state中的数据。
this.setState可以返回一个函数,也推荐大家尽量使用函数式setstate,如:
handleInputChange(e){ const value = e.target.value this.setState(()=>({ inputValue: value })) }
这里注意,我们不能直接inputValue:e.target.value,而要先做一份拷贝,再使用,否则会报错。
tips: 函数体用()括住,表示函数体是一个直接return的对象,等同于:this.setState(()=>{ return { inputValue: value } })
- 在html标签上使用ref时,例如<ul ref={()=>{}}