今天复习React的双向绑定的时候遇到了一个问题,首先我们来看我写的双向绑定代码
import React, { Component } from 'react' class Test extends Component { constructor(props) { super(props) this.state = { inputValue: 'test value', list: [] } } render() { return ( <div> <div> <input type='text' value= {this.state.inputValue} onChange= {this.inputChange.bind(this)} /> </div> </div> ) } inputChange(e){ this.setState({ inputValue : e.target.value }) console.log(this.state.inputValue) } } export default Test
运行一下>
乍一看是一点问题都没有,但是我发现我输入了三个a,但是控制台只输出两个a!于是我回过头检查我的代码,因为简单的双向绑定内容确实不多,讲道理应该不会出现问题。研究无果,不得不求助大佬。于是打开百度。
还真让我给找到了,大佬博客,原来是this.setState的问题,大佬详细讲了原因以及解决方案。
解决我想要的效果最快的方法就是回调函数,以下是修改过后的inputChange()函数的部分。
inputChange(e){
this.setState({
inputValue : e.target.value
},()=>{
console.log(this.state.inputValue)
})
}
效果
更深入的学习请看大佬的博客的内容,本内容旨在记录个人学习中遇到的问题。
最后一次更新于2019-07-15
lvbi
By 苗洪波 at July 15th, 2019 at 11:21 am.
@苗洪波
那行呀 = =
By 猫不理的锅包肉 at July 15th, 2019 at 02:32 pm.