011|React之Uncontrolled Component

在前面的課程中,我們介紹了在React中如何處理表單。通過截獲控件onChange方法,從而將value控制于組件中的模式叫做Controlled Component。

ControlledComponent的一個(gè)特點(diǎn)是代碼量大,較為麻煩。在React中,還有另一種處理表彰的模式,叫UncontrolledComponent。

前一節(jié)中我們介紹了React中一個(gè)非常重要的特性:Ref函數(shù)。利用Ref函數(shù),可以幫助我們實(shí)現(xiàn)UnControlled Component。

UnControlled Component不截獲控件的值,而是通過Ref函數(shù),獲取到控件DOM,每次取值時(shí)直接從DOM中取。

通過下面的例子來了解一下:

class NameForm extends React.Component {
  constructor(props) {
    super(props);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleSubmit(event) {
    alert('A name was submitted: ' + this.input.value); // 根據(jù)DOM獲取value
    event.preventDefault();
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Name:
          <input type="text" ref={(input) => this.input = input} />  // 使用ref函數(shù)記錄下DOM
        </label>
        <input type="submit" value="Submit" />
      </form>
    );
  }
}

使用Uncontrolled Component 模式下,可以使用defaultValue來給控件設(shè)置初始值:

render() {
  return (
    <form onSubmit={this.handleSubmit}>
      <label>
        Name:
        <input
          defaultValue="Bob" // 使用defautValue設(shè)置初始值
          type="text"
          ref={(input) => this.input = input} />
      </label>
      <input type="submit" value="Submit" />
    </form>
  );
}

如何優(yōu)化React性能?

好,這一節(jié)就到這里?,F(xiàn)這里,你已經(jīng)達(dá)到React中級(jí)水平,后續(xù)我將介紹更多React高級(jí)技術(shù)。

想學(xué)計(jì)算機(jī)技術(shù)嗎?需要1對(duì)1專業(yè)級(jí)導(dǎo)師指導(dǎo)嗎?想要團(tuán)隊(duì)陪你一起進(jìn)步嗎?歡迎加我為好友!微信號(hào):iTekka。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,308評(píng)論 25 708
  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,188評(píng)論 2 35
  • It's a common pattern in React to wrap a component in an ...
    jplyue閱讀 3,409評(píng)論 0 2
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書,強(qiáng)調(diào)了記筆記和堅(jiān)持的重要性。這幾天也剛好在學(xué)習(xí)React,所以我打算每天堅(jiān)持一篇R...
    gaoer1938閱讀 1,817評(píng)論 0 5
  • 緣起 自從給Macbook Pro搭配了一個(gè)藍(lán)牙鍵盤后,總是存在缺陷。差不多機(jī)器睡眠10小時(shí),藍(lán)牙就無法連接了,只...
    XingKaiXin閱讀 455評(píng)論 0 1

友情鏈接更多精彩內(nèi)容