您好,登錄后才能下訂單哦!
React雙向數(shù)據(jù)的綁定原理是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
如果已經(jīng)學(xué)過(guò)Vue
,并且深入了解過(guò)Vue
的雙向數(shù)據(jù)綁定的話,就會(huì)明白 Vue 2.0
雙向數(shù)據(jù)綁定的核心其實(shí)是通過(guò)Object.defineProperty
來(lái)實(shí)現(xiàn)數(shù)據(jù)劫持和監(jiān)聽(tīng)。
在 Vue 3.0
中則通過(guò) Proxy
來(lái)實(shí)現(xiàn)對(duì)整體對(duì)象的監(jiān)聽(tīng),對(duì) Vue2.0
的優(yōu)化。
數(shù)據(jù)模型和視圖之間的雙向綁定。
當(dāng)數(shù)據(jù)發(fā)生變化的時(shí)候,視圖也就發(fā)生變化,當(dāng)視圖發(fā)生變化的時(shí)候,數(shù)據(jù)也會(huì)跟著同步變化;可以這樣說(shuō)用戶在視圖上的修改會(huì)自動(dòng)同步到數(shù)據(jù)模型中去,數(shù)據(jù)模型也是同樣的變化。
雙向數(shù)據(jù)綁定的優(yōu)點(diǎn):無(wú)需和單向數(shù)據(jù)綁定那樣進(jìn)行CRUD(Create,Retrieve,Update,Delete)操作,雙向數(shù)據(jù)綁定最常應(yīng)用在就表單上,這樣當(dāng)用戶在前端頁(yè)面完成輸入后,不用任何操作,我們就已經(jīng)拿到了用戶輸入好的數(shù)據(jù),并放到數(shù)據(jù)模型中了。
但是,在 React
中是不存在雙向數(shù)據(jù)綁定的機(jī)制的,需要我們自己對(duì)其進(jìn)行實(shí)現(xiàn)。
這種功能實(shí)際上,React
已經(jīng)幫助我們實(shí)現(xiàn)了,使用 setState({ })
方法修改數(shù)據(jù)。
(React
內(nèi)部提供的修改方法),不允許通過(guò)this.state.屬性名 = 數(shù)據(jù)
的方法進(jìn)行數(shù)據(jù)修改。
代碼
import React, { Component } from 'react'; // 引入 antd UI庫(kù) import { Button } from 'antd'; class Home extends Component { constructor(props) { super(props); this.state = { inputVal:'', }; } setValue=()=>{ this.setState({ inputVal:"修改 Value" }) } render() { return ( <div className="home" > Home組件 <p> {this.state.inputVal}</p> {/* 使用了 antd UI庫(kù) */} <Button type="primary" onClick={this.setValue}>修改數(shù)據(jù)</Button> </div> ); } } export default Home;
效果
通過(guò) React
提供的 onChage 監(jiān)聽(tīng)事件
實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)錄入
同時(shí),使用 value
或者 defaultValue
在 input
框中呈現(xiàn)內(nèi)容
為了方便顯示,這里使用了 p
標(biāo)簽來(lái)顯示內(nèi)容
代碼
import React, { Component } from 'react'; import { Button } from 'antd'; // antd UI庫(kù) class Home extends Component { constructor(props) { super(props); this.state = { inputVal:'', }; } change = (ev)=>{ this.setState({ inputVal:ev.target.value }) } render() { return ( <div className="home" > Home組件 <input onChange={this.change} // value={this.state.inputVal} defaultValue={this.state.inputVal} placeholder="輸入文本內(nèi)容" /> <p> {this.state.inputVal}</p> </div> ); } } export default Home;
效果
注意:
使用 value
綁定時(shí),value
和 defaultValue
只能使用一個(gè),否則會(huì)報(bào)警告
看完上述內(nèi)容,你們掌握React雙向數(shù)據(jù)的綁定原理是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。