React.js開發入門教學(3)-取得輸入值

今天要來建立一個可以取到使用者輸入的值的表單!我們一樣先建立起一個處理傳值的方法

所以javascript的部份先寫成這樣

var form = React.createClass({
    render:function(){
        return React.DOM.div(  //建立一個裡面有一個input跟h2的區塊
            null,
            React.DOM.input({type: 'text'}),
            React.DOM.h2(null, 'TEST')
        )    
    }
  }
);

ReactDOM.render(
  React.createElement(form),
  document.getElementById('test')
);

接下來我們把這個 form的方法在做點修改,改成

var form = React.createClass({
    getInitialState: function() {  //初始化state裡面這個叫做val的變數
        return {
            val: ''
        };
    },
    showVal: function(e) {    //這邊是多寫一個方法來取得輸入的結果
        if(e.key === 'Enter')  //偵測到按下的鍵是ENTER的時候執行以下內容
            this.setState({
                val: e.target.value  //把現在所在的元件中的value內容全部塞給state裡的val
            });
    },
    render:function(){
        return React.DOM.div(
            null,
            React.DOM.input({type: 'text', onKeyPress: this.showVal}), //每當我敲下鍵盤就執行一次showVal
            React.DOM.h2(null, this.state.val) //顯示state中val的值
        )    
    }
  }
);

執行看看,是不是當你按下ENTER的時候,輸入框下方就會顯示剛剛輸入的結果呢?

我們來作點小變化,如果今天你不喜歡用enter,你就愛用一顆按鈕,那你也可以這樣寫

var form = React.createClass({
    getInitialState: function() {
        return {
            val: ''
        };
    },
    showVal: function(e) {
            this.setState({
                val: document.getElementById('input_a').value
            });
    },
    render:function(){
        return React.DOM.div(  //建立一個裡面有一個input跟h2的區塊
            null,
            React.DOM.input({type: 'text', id: 'input_a'}),
            React.DOM.input({type: 'button', value: '送出', onClick: this.showVal}),
            React.DOM.h2(null, this.state.val)
        )    
    }
  }
);

這樣就可以在你按下按鈕的時候取到你剛剛建立的input_a的值了!