React的雙向繫結

來源:互聯網
上載者:User

標籤:

以前對於雙向繫結概念來自於Angular.js,現在我用我感興趣的react.js來實現這樣的方式。有2種方式分析,1:不用外掛程式,2:用外掛程式

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

不用外掛程式:

    先建立react組件

 

var NoLink = React.createClass({});React.render(<NoLink />,document.body);

 

組件建立好了,需要一個初始設定變數,來公用顯示輸入的資料

var NoLink = React.createClass({ getInitialState:function(){        return {message:‘‘}    }});React.render(<NoLink />,document.body);

message初始值為空白,這是正常項目環境可以這樣設定。下面我想用一個input輸入框 和一個b標籤實現雙向繫結的效果,render所需要的html標籤

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輸入框中加了一個onChange操作,這個處理當我們輸入內容的時候,怎麼讓輸入的內容同時展示在b標籤中;在react操作中其實很簡單。

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直接調用handelChange函數,在這隻要處理對初始設定變數message的重新賦值就可以了,在react中擷取初始值 直接用“this.state.初始值",如果想設定初始值直接用"this.setState({初始值:新值})",這個點先理清楚了我需要設定初始值,然後呢

我的輸入值怎麼直接管理到setState中去,當我onChange={this.handelChange}時候就開始應用handelChange函數了在這裡通過event.target可以直接擷取當前dom元素對象,因為我在這裡用input,擷取其值的方式".value"就可以了。

我在render的時候定義了mess變數來存放初始化message的值,這個js寫法,懂得js效能的人一看就明白了,不多說。看下在瀏覽器的操作:

接下來換種方式:用外掛程式形式

用外掛程式:

    react.js給我們提供了linkState函數,但這個函數來自於React.addons.LinkedStateMixin,首先看下源碼的操作,先進入React.addons.js中去找LinkedStateMixin

這裡幾個屬性就是這個addons.js中提供的所有操作,有重要的react動畫外掛程式CSSTransitionGroup包含其中。接下來我們這次需要linkedStateMixin所以走到這個對象中去看看:

在這裡只提供了linkState函數,直接返回一個ReactLink對象,把參數直接給ReactLink對象去做處理。

 

React的雙向繫結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.