国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

“React中的DOM操作”筆記

wyk1184 / 1426人閱讀

摘要:中的每一個(gè)組件都是一個(gè)狀態(tài)機(jī),通常情況下,我們通過設(shè)置組件的狀態(tài)就可以完成的更新,但是在某些情況下確實(shí)需要直接操作。只在組件中調(diào)用,組件就是已經(jīng)渲染在瀏覽器結(jié)構(gòu)中的組件。

React中的每一個(gè)組件都是一個(gè)狀態(tài)機(jī),通常情況下,我們通過設(shè)置組件的狀態(tài)就可以完成UI的更新,但是在某些情況下確實(shí)需要直接操作DOM。

React中操作DOM的方法:

Refs

findDOMNode()

findDOMNode()

當(dāng)組件加載到頁(yè)面上之后(mounted),你就可以通過 getDOMNode() 方法拿到組件對(duì)應(yīng)的 DOM 元素。

React.findDOMNode()只在mounted組件中調(diào)用,mounted組件就是已經(jīng)渲染在瀏覽器DOM結(jié)構(gòu)中的組件。如果你在組件的render()方法中調(diào)用React.findDOMNode()就會(huì)拋出異常。
Refs

通過在要引用的 DOM 元素上面設(shè)置一個(gè) ref 屬性指定一個(gè)名稱,然后通過 this.refs.name 來訪問對(duì)應(yīng)的 DOM 元素。

比如有一種情況是必須直接操作 DOM 來實(shí)現(xiàn)的,你希望一個(gè) 元素在你清空它的值時(shí) focus,你沒法僅僅靠 state 來實(shí)現(xiàn)這個(gè)功能。

class App extends Component {
  constructor() {
    return { userInput: "" };
  }

  handleChange(e) {
    this.setState({ userInput: e.target.value });
  }

  clearAndFocusInput() {
    this.setState({ userInput: "" }, () => {
      this.refs.theInput.focus();
    });
  }

  render() {
    return (
      
Click to Focus and Reset
); } }

如果ref 是設(shè)置在原生 HTML 元素上,它拿到的就是 DOM 元素,如果設(shè)置在自定義組件上,它拿到的就是組件實(shí)例,這時(shí)候就需要通過 findDOMNode來拿到組件的 DOM 元素。

因?yàn)闊o狀態(tài)組件沒有實(shí)例,所以 ref 不能設(shè)置在無狀態(tài)組件上,一般來說這沒什么問題,因?yàn)闊o狀態(tài)組件沒有實(shí)例方法,不需要 ref 去拿實(shí)例調(diào)用相關(guān)的方法,但是如果想要拿無狀態(tài)組件的 DOM 元素的時(shí)候,就需要用一個(gè)狀態(tài)組件封裝一層,然后通過 ref findDOMNode 去獲取。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79864.html

相關(guān)文章

  • React中的小知識(shí)點(diǎn)

    摘要:配置默認(rèn)和中的操作并不能完全滿足所有操作需求,有些時(shí)候還是需要和打交道。當(dāng)中提供了屬性來幫助我們獲取已經(jīng)掛載元素的節(jié)點(diǎn)。當(dāng)元素在頁(yè)面上掛載完成以后,就會(huì)調(diào)用這個(gè)函數(shù),并且把這個(gè)掛載以后的節(jié)點(diǎn)傳給這個(gè)函數(shù)。 配置默認(rèn) defaultProps class ExampleComponent extends React.Component{ static defaultProps =...

    niceforbear 評(píng)論0 收藏0
  • 大部分程序員都記不住的注解,Idea 云筆記卻能輕松記住

    摘要:只因技術(shù)種類繁雜眾多層出不窮,程序員只有靠不斷的學(xué)習(xí)才能不落后于技術(shù),被工作淘汰。特此推薦給大家。 99%的程序員每天都是先學(xué)習(xí),后工作,不然完成不了工作。只因技術(shù)種類繁雜眾多、層出不窮,程序員只有靠不斷的學(xué)習(xí)才能不落后于技術(shù),被工作淘汰。我就是這其中一員,深得體會(huì)其中的「疼并快樂」,在...

    ARGUS 評(píng)論0 收藏0
  • EverMonkey-VSCode上最好用的印象筆記插件

    摘要:配置在第一次使用小猿之前,需要配置印象筆記的開發(fā)者令牌。小猿在被激活后會(huì)執(zhí)行一次這個(gè)命令,并且將以上內(nèi)容緩存到內(nèi)存中。建議與改進(jìn)小猿是一個(gè)開源項(xiàng)目,歡迎廣大印象筆記和的愛好者的反饋以及。 印象猿 印象猿(EverMonkey)是一款 VSCode 插件。使用小猿可以讓你在 VSCode 中使用 Markdown 編輯,創(chuàng)建,更新印象筆記。 安裝 打開 VSCode,在擴(kuò)展商店中搜索 e...

    entner 評(píng)論0 收藏0
  • LocalNote,像使用本地文件一樣使用印象筆記(支持 markdown 格式)

    摘要:讓你能夠像使用本地文件一樣使用印象筆記。支持流行的格式的筆記,印象筆記中完美顯示,上傳重新下載筆記仍為格式。三平臺(tái)支持,安裝即用,在平臺(tái)也流暢的使用印象筆記。在被限制期間登錄也會(huì)受限,所以會(huì)提示尚未登錄。 LocalNote showImg(https://badges.gitter.im/littlecodersh/LocalNote.svg); showImg(https://im...

    Galence 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

wyk1184

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<