談談react組件中input


一切從需求出發,一切向功能看齊。我們討論一個東西的時候,首先要知道它是干什么? 

例如一個登錄界面UI:

html和css寫好了,放到了render函數中:

需求是這樣的:想要獲取真實dom,在react中怎么實現呢?用什么要獲取真實的dom,因為react在render中

渲染的是虛擬dom(virtual DOM)。

有個需求需要處理用戶輸入的值:這時候我們就需要獲取真實的dom,怎么做呢?

給input加入一個ref屬性,<input ref="Dom" value="111"/> ,通過this.ref.dom就能獲取到這個input,this.ref.Dom.value就能獲取input中的值。

react中的input事件:onChange:當value發生改變時,觸發該事件。

 

 

需求輸入的手機號為這種格式:134 7326 0471  ,思路是在onChage事件中處理邏輯:

當輸入的長度為3,8的時候加入一個" "

輸入的情況:

var val = this.refs.Phone.value;
if ((val.length == 3 || val.length == 8) && (val.length > this.state.phoneValue.length)) {
  val += " ";

}

還有可能是ctrl+v過來的信息:

if ((val.length >= 11) && (val.indexOf(' ') == -1)) {

  val = val.split(' ').join('').slice(0, 3) + ' ' + val.split(' ').join('').slice(3, 7) + ' ' + val.split('   ').join('').slice(7)

}

控制一下輸入的長度:

if (val.length > 11) {
  val = val.slice(0,11);
}

getInitialState() {

  return({

    phoneValue: '',

  })

}

this.setState({

   phoneValue: val

})

 這樣我們就寫好了對輸入框的的value處理。

 

關鍵詞:ref  virtual DOM

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM