亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法詳解

 更新時(shí)間:2017年07月03日 11:48:54   作者:前端藝術(shù)者  
我們知道在 angular 中數(shù)據(jù)時(shí)雙向綁定的;而在 react 中,數(shù)據(jù)是向一個(gè)方向傳遞:從擁有者到子節(jié)點(diǎn)。也就是我們說(shuō)的單向數(shù)據(jù)綁定。那如何實(shí)現(xiàn)雙向綁定呢?下面這篇文章主要給大家介紹了關(guān)于React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法,需要的朋友可以參考下。

前言

以前對(duì)于雙向綁定概念來(lái)自于Angular.js,現(xiàn)在我用我感興趣的react.js來(lái)實(shí)現(xiàn)這樣的方式。

有2種方式分析,1:不用插件,2:用插件

(引入react.js操作省略。。。)

不用插件:

先創(chuàng)建react組件

var NoLink = React.createClass({});

React.render(<NoLink />,document.body);

組件創(chuàng)建好了,需要一個(gè)初始化變量,來(lái)公用顯示輸入的數(shù)據(jù)

var NoLink = React.createClass({
 getInitialState:function(){
  return {message:''}
 }
});

React.render(<NoLink />,document.body);

message初始值為空,這是正常項(xiàng)目環(huán)境可以這樣設(shè)置。下面我想用一個(gè)input輸入框 和一個(gè)b標(biāo)簽實(shí)現(xiàn)雙向綁定的效果,render所需要的html標(biāo)簽

var NoLink = React.createClass({
 getInitialState:function(){
  return {message:''}
 },
 render:function(){
  var mess = this.state.message;
  return (
   <div>
    <input type="text" onChange={this.handelChange} value={mess} />
    <b>{mess}</b>
   </div>
  )
 }
});
React.render(<NoLink />,document.body);

在上面代碼中 可以清晰的 看出返回的組件元素,其中在input輸入框中加了一個(gè)onChange操作,這個(gè)處理當(dāng)我們輸入內(nèi)容的時(shí)候,怎么讓輸入的內(nèi)容同時(shí)展示在b標(biāo)簽中;在react操作中其實(shí)很簡(jiǎn)單。

var NoLink = React.createClass({
 getInitialState:function(){
  return {message:''}
 },
 handelChange:function(event){
  console.log(event.target);
  this.setState({message:event.target.value})
 },
 render:function(){
  var mess = this.state.message;
  return (
   <div>
    <input type="text" onChange={this.handelChange} value={mess} />
    <b>{mess}</b>
   </div>
  )
 }
});

React.render(<NoLink />,document.body);

onChange直接調(diào)用handelChange函數(shù),在這只要處理對(duì)初始化變量message的重新賦值就可以了,在react中獲取初始值 直接用“this.state.初始值",如果想設(shè)置初始值直接用"this.setState({初始值:新值}) ",這個(gè)點(diǎn)先理清楚了我需要設(shè)置初始值,然后呢

我的輸入值怎么直接管理到setState中去,當(dāng)我onChange={this.handelChange}時(shí)候就開(kāi)始應(yīng)用handelChange函數(shù)了在這里通過(guò)event.target可以直接獲取當(dāng)前dom元素對(duì)象,因?yàn)槲以谶@里用input,獲取其值的方式".value"就可以了。

我在render的時(shí)候定義了mess變量來(lái)存放初始化message的值,這個(gè)js寫(xiě)法,懂得js性能的人一看就明白了,不多說(shuō)??聪略跒g覽器的操作:

接下來(lái)?yè)Q種方式:用插件形式

用插件:

react.js給我們提供了linkState函數(shù),但這個(gè)函數(shù)來(lái)自于React.addons.LinkedStateMixin,首先看下源碼的操作,先進(jìn)入React.addons.js中去找LinkedStateMixin

這里幾個(gè)對(duì)象就是這個(gè)addons.js中提供的所有操作,有重要的react動(dòng)畫(huà)插件CSSTransitionGroup包含其中。接下來(lái)我們這次需要linkedStateMixin所以走到這個(gè)對(duì)象中去看看:

在這里只提供了linkState函數(shù),直接返回一個(gè)ReactLink對(duì)象,把參數(shù)直接給ReactLink對(duì)象去做處理。

主要這個(gè)東西怎么用在實(shí)例中,先創(chuàng)建一個(gè)react組件

var ReactLink = React.createClass({});


React.render(<ReactLink />,document.body);

接下來(lái)思考,在這個(gè)組件中我們?cè)趺匆胪饷鎸?duì)象,react.js提供了一個(gè)mixins的函數(shù),要是引用對(duì)象多了直接以數(shù)組形式展現(xiàn);其源碼如圖

在組件中直接這樣使用即可:

var ReactLink = React.createClass({
 //引用公共插件linkedStateMixin
 mixins:[React.addons.LinkedStateMixin]
});


React.render(<ReactLink />,document.body);

linkedStateMixin是拿到了,現(xiàn)在我們要做的是怎么在定義的vdom上使用,在源碼中我看到this.props.valueLink  這樣的形式,說(shuō)明在虛擬dom元素中加入valueLink才能使用,

var ReactLink = React.createClass({
 //引用公共插件linkedStateMixin
 mixins:[React.addons.LinkedStateMixin],
 getInitialState:function(){
  return {message:''}
 },
 render:function(){
  return (
    <div>
     <input type="text" valueLink = {this.linkState('message')}/>
     <b>{this.state.message}</b>
    </div>
  )
 }
});


React.render(<ReactLink />,document.body);

上面的寫(xiě)法也是最簡(jiǎn)潔的寫(xiě)法,直接將初始化變量message傳給linkState函數(shù)中去,然后react插件源碼先獲取的虛擬dom中的valueLink屬性再進(jìn)行操作。

用這樣形式寫(xiě)好了 試一下效果:

完全OK.

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例

    react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例

    下面小編就為大家?guī)?lái)一篇react native實(shí)現(xiàn)往服務(wù)器上傳網(wǎng)絡(luò)圖片的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例

    本文主要介紹了react無(wú)限滾動(dòng)組件的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • react中實(shí)現(xiàn)修改input的defaultValue

    react中實(shí)現(xiàn)修改input的defaultValue

    這篇文章主要介紹了react中實(shí)現(xiàn)修改input的defaultValue方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • React Native使用Modal自定義分享界面的示例代碼

    React Native使用Modal自定義分享界面的示例代碼

    本篇文章主要介紹了React Native使用Modal自定義分享界面的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 關(guān)于react 父子組件的執(zhí)行順序

    關(guān)于react 父子組件的執(zhí)行順序

    這篇文章主要介紹了關(guān)于react 父子組件的執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React?組件傳?children?的各種案例方案詳解

    React?組件傳?children?的各種案例方案詳解

    自定義組件的時(shí)候往往需要傳?children,由于寫(xiě)法比較多樣,我就總結(jié)了一下,要自定義的組件其中包含一個(gè)?title?和一個(gè)?children,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • React中state屬性案例詳解

    React中state屬性案例詳解

    在React中,state 是一個(gè)用于存儲(chǔ)組件內(nèi)部數(shù)據(jù)的特殊對(duì)象,每個(gè)React組件都可以包含自己的state,我們往往是通過(guò)修改state的值來(lái)驅(qū)動(dòng)React重新渲染組件,這篇文章主要介紹了React中state屬性,需要的朋友可以參考下
    2023-11-11
  • 前端 react 實(shí)現(xiàn)圖片上傳前壓縮(縮率圖)

    前端 react 實(shí)現(xiàn)圖片上傳前壓縮(縮率圖)

    這篇文章主要介紹了前端 react 實(shí)現(xiàn)圖片上傳前壓縮(縮率圖),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • React實(shí)現(xiàn)Step組件的示例代碼

    React實(shí)現(xiàn)Step組件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)Step組件(步驟條組件)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • react-native之ART繪圖方法詳解

    react-native之ART繪圖方法詳解

    本篇文章主要介紹了react-native之ART繪圖方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08

最新評(píng)論