用過Vue
的同窗都知道,Vue
裏<input>
、 <textarea>
及 <select>
等表單元素能夠經過v-model
指令實現雙向數據綁定,也就是說,當用戶經過交互改變表單的值時,表單綁定的數據也會同步響應,這一點也是Vue
對開發人員很是友好的點之一。框架
然而當咱們初學React
的時候,就會發現React
並不提供數據雙向綁定功能。也就是說,以<input>
爲例,咱們能夠經過setState
命令改變input
綁定的數據,從而改變input
的值,可是用戶填寫input
表單並不能改變input
綁定的數據。this
可是其實在Vue
中,input
等表單元素的雙向數據綁定也不是Vue
框架本有的功能,v-model
雙向數據綁定說到底其實不過是Vue
爲咱們提供的語法糖。也就是說,v-model
實際上是合併了v-bind:value
和v-on:input
兩條指令,把數據綁定和用戶輸入事件集成到了一塊兒。雙向綁定
根據這個原理,咱們也能夠爲React
來添加input
的雙向數據綁定功能。code
1,在constructor
裏設置input
綁定數據對象msg
的初始值對象
constructor(props) { super(props); this.state = { msg: 'hello' } }
2,給input
表單元素綁定數據對象msg
,下面一個<p>
標籤裏也綁定數據對象msg
,以監測顯示數據的變化事件
<input value={this.state.msg} /> <p>{this.state.msg}</p>
3,給input
表單添加輸入事件監聽動做,在用戶輸入的時候同步綁定數據開發
<input value={this.state.msg} onChange={e => this.setState({msg:e.target.value})} />
至此,咱們在React
裏也爲input
表單實現了相似Vue
的v-model
指令功能,其餘表單對象能夠仿照實現。get