今天复习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

运行一下>

屏幕快照 2019-07-10 下午3.36.24.png

乍一看是一点问题都没有,但是我发现我输入了三个a,但是控制台只输出两个a!于是我回过头检查我的代码,因为简单的双向绑定内容确实不多,讲道理应该不会出现问题。研究无果,不得不求助大佬。于是打开百度。
还真让我给找到了,大佬博客,原来是this.setState的问题,大佬详细讲了原因以及解决方案。

解决我想要的效果最快的方法就是回调函数,以下是修改过后的inputChange()函数的部分。

inputChange(e){
this.setState({
inputValue : e.target.value
},()=>{
console.log(this.state.inputValue)
})
}

效果

更深入的学习请看大佬的博客的内容,本内容旨在记录个人学习中遇到的问题。