最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React實(shí)現(xiàn)雙向綁定示例代碼

 更新時(shí)間:2016年09月19日 09:29:54   作者:starwmx520  
這篇文章給大家介紹了在React中如何實(shí)現(xiàn)雙向綁定,文中給出了示例代碼,對(duì)大家的理解與學(xué)習(xí)很有幫助,有需要的朋友下面來(lái)一起看看吧。

前言

React.js現(xiàn)在已經(jīng)很流行了,不會(huì)React.js都不好意思說(shuō)自己會(huì)前端了。

那么下面就來(lái)看看關(guān)于React雙向綁定的實(shí)現(xiàn)。

雙向綁定的使用:

組件需要mixins:引用LinkedStateMixin。它提供一個(gè)linkState方法。

參數(shù)是state屬性

雙向綁定用valueLink={this.linkState(XX)}

linkState方法返回一個(gè)對(duì)象,有一個(gè)value屬性,指定state的屬性。

還有一個(gè)requestChange回調(diào)方法,用來(lái)實(shí)現(xiàn)state的修改。參數(shù)是新值

可以理解成onchange的綁定方法。可以自己寫(xiě)一個(gè)linkState對(duì)象,value是state.XX requestChange里用setState()來(lái)修改值。用valueLink={obj}來(lái)實(shí)現(xiàn)。

可以理解成this.linkState()實(shí)現(xiàn)的就是指定綁定值value 和change方法

valueLink屬性實(shí)現(xiàn)了linkstate.value綁定到value requestChange方法綁定onChange

可以創(chuàng)建一個(gè)this.linkState('XX') value={XX.value} onchange={fn}方法內(nèi)使用Xx.requestChange(e.target.value)

-------------------------

小結(jié):linkState()方法提供state屬性和change方法。valueLink={}來(lái)實(shí)現(xiàn)value 和change事件的綁定。

以下是實(shí)現(xiàn)代碼

/*默認(rèn)表單雙向綁定
   * 給每個(gè)input綁定change事件來(lái)實(shí)現(xiàn)修改state
   * 如果標(biāo)簽多了一個(gè)個(gè)綁定肯定是不行的,
   * 所以react 給我個(gè)提示了reactLink來(lái)
   */
   var Box1=React.createClass({
   getInitialState:function(){
    return {
    name:'star',bool:true
    }
   },
   handlNameChange:function(event){
    this.setState({name:event.target.value});
   },handlboolChange:function(event){
    this.setState({bool:event.target.checked})
   },
   render:function(){
    return (
    <div>
     <input type="text" value={this.state.name} onChange={this.handlNameChange}/>   <br/>
     <input type="checkbox" checked={this.state.bool} onChange={this.handlboolChange} />
    </div> 
    )
   }
   }) ;
   React.render(<Box1></Box1>,document.querySelector('#div1'));
   
   /*ReactLink僅是提供了onchange setState模式的簡(jiǎn)單包裝和約定。是其的簡(jiǎn)寫(xiě)方式
   * 1、需要mixins添加引用
   * 2、原先的value綁定換成valueLink。參數(shù)從this.state.XX換成this.linkState('XX')這樣就可以了
   */
   /*ReactLink解析
   * LinkedStateMixin給組件添加一個(gè)linkState方法,參數(shù)是state屬性名。
   * 它返回一個(gè)reactlink對(duì)象,包含state當(dāng)前值和一個(gè)改變值 的回調(diào).
   * reactlink 可以在組件間通過(guò)props傳遞
   */
   var Box2=React.createClass({
   mixins:[React.addons.LinkedStateMixin],//添加引用
   getInitialState:function(){
    return {
    name:'star',bool:true
    }
   },
   render:function(){//綁定時(shí)屬性從value換成valueLink值需要用this.linkState方法調(diào)用
    return (
    <div>
     <input type="text" valueLink={this.linkState('name')} />   <br/>
     <input type="checkbox" checkedLink={this.linkState('bool')} />
    </div>   
    );
   }
   })
   React.render(<Box2></Box2>,document.querySelector('#div2'));
   
   /*底層原理
   * reactlink對(duì)象其實(shí)就一個(gè)value屬性,和一個(gè)requestChange方法,value值 是state。方法實(shí)現(xiàn)修改state值
   * 
   */
   var Box3=React.createClass({
   getInitialState:function(){
    return {
    name:'star',bool:true
    }
   },
   handlnamechange:function(val){
    this.setState({name:val})
   },
   handlboolchange:function(val){
    this.setState({bool:val})
   },
   render:function(){
    var reactlink={
    value:this.state.name,
    requestChange:this.handlnamechange
    }
    var reactlink2={
    value:this.state.bool,
    requestChange:this.handlboolchange
    }
     return(
      <div>
     <input type="text" valueLink={reactlink} />   <br/>
     <input type="checkbox" checkedLink={reactlink2} />
    </div> 
     )
   }
   });
   React.render(<Box3></Box3>,document.querySelector('#div3'));
   
   /*valuelink
   * 它實(shí)際上實(shí)現(xiàn)的是狀態(tài)的綁定和change事件的修改
   * requestChange方法接收值來(lái)實(shí)現(xiàn)state的修改
   */
   var Box4=React.createClass({
   mixins:[React.addons.LinkedStateMixin],//添加引用
   getInitialState:function(){
    return {
    name:'star',bool:true
    }
   },
   render:function(){
    var valuelink=this.linkState('name');
    var handlenamechange=function(e){
      valuelink.requestChange(e.target.value) 
    }
    var valuelink2=this.linkState('bool');
    var handlenboolchange=function(e){
      valuelink2.requestChange(e.target.checked) 
    }    
    return (
      <div>
     <input type="text" value={valuelink.value} onChange={handlenamechange} />   <br/>
     <input type="checkbox" checked={valuelink2.value} onChange={handlenboolchange} />
    </div> 
    )
   }
   });
   React.render(<Box4></Box4>,document.querySelector('#div4'));

------------------------ReactLink對(duì)象傳遞

可以向子組件傳遞:

linkname={this.linkState('name')}

子組件內(nèi)可:

<input type="text" valueLink={this.props.linkname} >

通過(guò)props來(lái)引用并綁定到valueLink上。

也可以用this.props.linkname.requestChange()來(lái)用方法修改值 。

它們的變化 會(huì)同步到父組件的。并更新標(biāo)簽的。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能有所幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • 詳解Redux的工作流程

    詳解Redux的工作流程

    這篇文章主要介紹了Redux的工作流程,redux是一個(gè)專門(mén)用于做狀態(tài)管理的JS庫(kù),它可以在react、angular、vue等項(xiàng)目中,但基本與react配合使用,需要的朋友可以參考下
    2022-08-08
  • React與Redux之?dāng)?shù)組處理講解

    React與Redux之?dāng)?shù)組處理講解

    這篇文章主要介紹了React與Redux之?dāng)?shù)組處理講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 需要避免的五個(gè)react的ref錯(cuò)誤用法

    需要避免的五個(gè)react的ref錯(cuò)誤用法

    react是一個(gè)優(yōu)秀的框架,提供了我們很多的便利,但是在使用的過(guò)程中,我們也會(huì)遇到很多的問(wèn)題,其中一個(gè)就是ref的使用,以下是我列出的5個(gè)使用ref的錯(cuò)誤用法,并提供了正確的用法,需要的朋友可以參考下
    2024-12-12
  • React實(shí)現(xiàn)骨架屏的示例代碼

    React實(shí)現(xiàn)骨架屏的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)React自動(dòng)化實(shí)現(xiàn)骨架屏,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • ReactNative踩坑之配置調(diào)試端口的解決方法

    ReactNative踩坑之配置調(diào)試端口的解決方法

    本篇文章主要介紹了ReactNative踩坑之配置調(diào)試端口的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 使用Webpack打包React項(xiàng)目的流程步驟

    使用Webpack打包React項(xiàng)目的流程步驟

    隨著React應(yīng)用日益復(fù)雜,開(kāi)發(fā)者需要借助模塊打包工具來(lái)管理項(xiàng)目依賴、轉(zhuǎn)換代碼和優(yōu)化性能,Webpack是一款功能強(qiáng)大的模塊打包器,它可以將React項(xiàng)目中的JavaScript、CSS、圖片等資源打包成瀏覽器友好的文件,本文將全面介紹如何使用Webpack打包React項(xiàng)目
    2025-03-03
  • 解決React報(bào)錯(cuò)React.Children.only expected to receive single React element child

    解決React報(bào)錯(cuò)React.Children.only expected to rece

    這篇文章主要為大家介紹了React報(bào)錯(cuò)React.Children.only expected to receive single React element child分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • react中實(shí)現(xiàn)將一個(gè)視頻流為m3u8格式的轉(zhuǎn)換

    react中實(shí)現(xiàn)將一個(gè)視頻流為m3u8格式的轉(zhuǎn)換

    這篇文章主要介紹了react中實(shí)現(xiàn)將一個(gè)視頻流為m3u8格式的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 深入淺析React refs的簡(jiǎn)介

    深入淺析React refs的簡(jiǎn)介

    React中的Refs提供了一種方式,允許我們?cè)L問(wèn)DOM節(jié)點(diǎn)或在render方法中創(chuàng)建的React元素,本文給大家介紹react refs的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-07-07
  • React引入css的幾種方式及應(yīng)用小結(jié)

    React引入css的幾種方式及應(yīng)用小結(jié)

    這篇文章主要介紹了React引入css的幾種方式及應(yīng)用小結(jié),操作styled組件的樣式屬性,可在組件標(biāo)簽上定義屬性、也可以通過(guò)attrs定義屬性,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03

最新評(píng)論

漳平市| 秦皇岛市| 长丰县| 北京市| 观塘区| 新乡县| 河西区| 福泉市| 萍乡市| 普格县| 东阿县| 保定市| 铁岭县| 绍兴县| 攀枝花市| 延庆县| 西丰县| 沈丘县| 萝北县| 瓮安县| 富宁县| 瓮安县| 南昌市| 泰和县| 凉山| 古浪县| 临潭县| 会理县| 阳山县| 香河县| 洪洞县| 封开县| 静海县| 乌兰浩特市| 临泉县| 嘉定区| 武乡县| 策勒县| 镇江市| 万盛区| 榆树市|