第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在React.js表單組件中使用狀態(tài)或引用?

在React.js表單組件中使用狀態(tài)或引用?

慕哥6287543 2019-10-15 10:29:18
我從React.js開始,我想做一個(gè)簡(jiǎn)單的表格,但是在文檔中我找到了兩種方法。在第一種是使用參考文獻(xiàn):var CommentForm = React.createClass({  handleSubmit: function(e) {    e.preventDefault();    var author = React.findDOMNode(this.refs.author).value.trim();    var text = React.findDOMNode(this.refs.text).value.trim();    if (!text || !author) {      return;    }    // TODO: send request to the server    React.findDOMNode(this.refs.author).value = '';    React.findDOMNode(this.refs.text).value = '';    return;  },  render: function() {    return (      <form className="commentForm" onSubmit={this.handleSubmit}>        <input type="text" placeholder="Your name" ref="author" />        <input type="text" placeholder="Say something..." ref="text" />        <input type="submit" value="Post" />      </form>    );  }});和第二個(gè)是使用狀態(tài)的陣營(yíng)部件內(nèi)部:var TodoTextInput = React.createClass({  getInitialState: function() {    return {      value: this.props.value || ''    };  },  render: function() /*object*/ {    return (      <input className={this.props.className}      id={this.props.id}      placeholder={this.props.placeholder}      onBlur={this._save}      value={this.state.value}      />    );  },  _save: function() {    this.props.onSave(this.state.value);    this.setState({value: ''  });});如果存在,我看不到這兩種選擇的優(yōu)缺點(diǎn)。謝謝。
查看完整描述

3 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

我已經(jīng)看到一些人引用以上答案作為“從不使用refs”的原因,我想發(fā)表自己的觀點(diǎn)(以及與我交談過(guò)的其他一些React開發(fā)人員)。

在談?wù)搶⑵溆糜诮M件實(shí)例時(shí),“不要使用引用”是正確的。意思是,您不應(yīng)使用引用作為獲取組件實(shí)例并在其上調(diào)用方法的方法。這是使用裁判的不正確方法,并且是裁判很快走到南邊的時(shí)候。

使用引用的正確(且非常有用)的方法是當(dāng)您使用引用從DOM中獲得一些價(jià)值時(shí)。例如,如果您有一個(gè)將引用附加到該輸入的輸入字段,則稍后通過(guò)該引用獲取值就可以了。如果沒(méi)有這種方式,您就需要經(jīng)過(guò)一個(gè)精心策劃的過(guò)程,以使您的輸入字段與您的本地州或流量存儲(chǔ)區(qū)保持最新-這似乎是不必要的。

2019編輯:未來(lái)的朋友你好。除了我?guī)啄昵疤岬降腲之外,借助React Hooks,引用也是跟蹤渲染之間的數(shù)據(jù)的好方法,并且不僅限于獲取DOM節(jié)點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

一般來(lái)說(shuō),refs與React的聲明式哲學(xué)背道而馳,因此您應(yīng)將它們用作最后的選擇。state / props盡可能使用。


要了解您在哪里使用refsvs state / props,讓我們看一下React遵循的一些設(shè)計(jì)原則。


每個(gè)React 文檔關(guān)于refs


避免將ref用于可以聲明式完成的任何事情。


Per React關(guān)于逃生艙口的設(shè)計(jì)原則


如果很難以聲明的方式表達(dá)一些對(duì)構(gòu)建應(yīng)用有用的模式,那么我們將為其提供命令性的API。(他們鏈接到這里的裁判)


這意味著React的團(tuán)隊(duì)建議避免refs和使用state / props以反應(yīng)性/聲明性方式可以完成的任何事情。


@Tyler McGinnis提供了一個(gè)很好的答案,并指出


正確(且非常有用)的引用使用方法是當(dāng)您使用它們從DOM中獲得一些價(jià)值時(shí)...


盡管可以做到這一點(diǎn),但您將與React的理念背道而馳。如果您在輸入中有價(jià)值,那么它肯定來(lái)自state / props。為了保持代碼的一致性和可預(yù)測(cè)性,您還應(yīng)該堅(jiān)持在state / props那里。我承認(rèn)refs有時(shí)可以為您提供更快的解決方案這一事實(shí),因此,如果您進(jìn)行概念驗(yàn)證,那么快速而骯臟的做法是可以接受的。


這給我們留下了幾個(gè)具體的使用情況進(jìn)行refs


管理焦點(diǎn),文本選擇或媒體播放。觸發(fā)命令式動(dòng)畫。與第三方DOM庫(kù)集成。


查看完整回答
反對(duì) 回復(fù) 2019-10-15
  • 3 回答
  • 0 關(guān)注
  • 627 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)