成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

React學(xué)習(xí)筆記—虛擬DOM

Tonny / 1034人閱讀

摘要:虛擬之所以快,是因?yàn)樗恢苯硬僮?。此外,?shí)現(xiàn)了一套完整的事件合成機(jī)制,能夠保持事件冒泡的一致性,跨瀏覽器執(zhí)行。大部分情況下,我們都是在構(gòu)建的組件,也就是操作虛擬。例如就表示組件被插入之前。組件更新后執(zhí)行組件被移除前執(zhí)行獲取真實(shí)的強(qiáng)制更新

React對底層的代碼作了封裝,在大多數(shù)情況下,我們不需要直接去操作DOM。但是有時(shí)候我們還是需要使用到底層的代碼的,比如輸入框獲取焦點(diǎn),這個(gè)時(shí)候可以通過第三方的類庫或者React提供的API實(shí)現(xiàn)。

虛擬DOM

React之所以快,是因?yàn)樗恢苯硬僮鱀OM。React將DOM結(jié)構(gòu)存儲在內(nèi)存中,然后同render()的返回內(nèi)容進(jìn)行比較,計(jì)算出需要改動的地方,最后才反映到DOM中。
此外,React實(shí)現(xiàn)了一套完整的事件合成機(jī)制,能夠保持事件冒泡的一致性,跨瀏覽器執(zhí)行。甚至可以在IE8中使用HTML5的事件。
大部分情況下,我們都是在構(gòu)建React的組件,也就是操作虛擬DOM。但是有時(shí)候我們需要訪問底層的API,可能或通過使用第三方的插件來實(shí)現(xiàn)我們的功能,如jQuery。React也提供了接口讓我們操作底層API。

Refs和findDOMNode()

為了同瀏覽器交互,我們有時(shí)候需要獲取到真實(shí)的DOM節(jié)點(diǎn)。我們可以通過調(diào)用React的React.findDOMNode(component)獲取到組件中真實(shí)的DOM。

  

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

看官方的示例:

var MyComponent = React.createClass({
  handleClick: function() {
    // Explicitly focus the text input using the raw DOM API.
    React.findDOMNode(this.refs.myTextInput).focus();
  },
  render: function() {
    // The ref attribute adds a reference to the component to
    // this.refs when the component is mounted.
    return (
      
); } }); React.render( , document.getElementById("example") );
組件的生命周期

組件的生命周期主要由三個(gè)部分組成:

Mounting:組件正在被插入DOM中

Updating:如果DOM需要更新,組件正在被重新渲染

Unmounting:組件從DOM中移除

React提供了方法,讓我們在組件狀態(tài)更新的時(shí)候調(diào)用,will標(biāo)識狀態(tài)開始之前,did表示狀態(tài)完成后。例如componentWillMount就表示組件被插入DOM之前。

Mounting

getInitialState():初始化state

componentWillMount():組件被出入DOM前執(zhí)行

componentDidMount():組件被插入DOM后執(zhí)行

Updating

componentWillReceiveProps(object nextProps):組件獲取到新的屬性時(shí)執(zhí)行,這個(gè)方法應(yīng)該將this.props同nextProps進(jìn)行比較,然后通過this.setState()切換狀態(tài)

shouldComponentUpdate(object nextProps, object nextState):組件發(fā)生改變時(shí)執(zhí)行,應(yīng)該將this.props和nextProps、this.stats和nextState進(jìn)行比較,返回true或false決定組件是否更新

componentWillUpdate(object nextProps, object nextState):組件更新前執(zhí)行,不能在此處調(diào)用this.setState()。

componentDidUpdate(object prevProps, object prevState):組件更新后執(zhí)行

Unmounting

componentWillUnmount():組件被移除前執(zhí)行

Mounted Methods

findDOMNode():獲取真實(shí)的DOM

forceUpdate():強(qiáng)制更新

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91495.html

相關(guān)文章

  • React學(xué)習(xí)筆記

    摘要:單向數(shù)據(jù)流數(shù)據(jù)一旦更新,會渲染整個(gè)。的渲染方式用戶輸入從獲取數(shù)據(jù)將數(shù)據(jù)傳給頂層組件將每個(gè)組件渲染出來由于是單向數(shù)據(jù)流,所以不會有雙向數(shù)據(jù)綁定數(shù)據(jù)模型的臟檢查確切的操作。 你覺得你用的react框架有什么特點(diǎn)呢? 1)使用jsx語法,可以在js中寫html。2)單向數(shù)據(jù)流:數(shù)據(jù)一旦更新,會渲染整個(gè)app。react的渲染方式: 用戶輸入 從API獲取數(shù)據(jù) 將數(shù)據(jù)傳給頂層組件 React將...

    taoszu 評論0 收藏0
  • React學(xué)習(xí)筆記—數(shù)據(jù)展示

    摘要:我們使用最基本的事就是用來展現(xiàn)數(shù)據(jù)。使得展現(xiàn)數(shù)據(jù)變得簡單,并且當(dāng)數(shù)據(jù)改變時(shí),能自動保持的更新。使用了內(nèi)部的虛擬,當(dāng)數(shù)據(jù)發(fā)生改變,先在虛擬中計(jì)算變化,最后將變動的部分反應(yīng)到真實(shí)的中??梢园阉醋饔兄蜖顟B(tài)并且可以返回結(jié)構(gòu)的函數(shù)。 我們使用UI最基本的事就是用來展現(xiàn)數(shù)據(jù)。React使得展現(xiàn)數(shù)據(jù)變得簡單,并且當(dāng)數(shù)據(jù)改變時(shí),React能自動保持UI的更新。 開始 創(chuàng)建一個(gè)簡單的Demo: ...

    Magicer 評論0 收藏0
  • 《深入react技術(shù)?!?em>學(xué)習(xí)筆記(二)初入React世界

    摘要:用于規(guī)范的類型與必需的狀態(tài)。表示由組件更改的數(shù)據(jù),通常是通過與用戶的交互來更改的。為了實(shí)現(xiàn)的修改,需要注冊事件處理程序到相應(yīng)的元素上。當(dāng)事件發(fā)生時(shí),將更新后的值是從中檢索,并通知組件。通常情況下,該函數(shù)初始化狀態(tài)使用,,或其他數(shù)據(jù)存儲。 前言 上一篇文章中,我們講到了JSX的一些用法和注意事項(xiàng),這次我們來講react中最基礎(chǔ)也是特別重要的內(nèi)容:組件。這篇文章包含組件的以下內(nèi)容:狀態(tài)、屬...

    MRZYD 評論0 收藏0
  • 學(xué)習(xí)MVVM及框架的雙向綁定筆記

    摘要:的數(shù)據(jù)劫持版本內(nèi)部使用了來實(shí)現(xiàn)數(shù)據(jù)與視圖的雙向綁定,體現(xiàn)在對數(shù)據(jù)的讀寫處理過程中。這樣就形成了數(shù)據(jù)的雙向綁定。 MVVM由以下三個(gè)內(nèi)容組成 View:視圖模板 Model:數(shù)據(jù)模型 ViewModel:作為橋梁負(fù)責(zé)溝通View和Model,自動渲染模板 在JQuery時(shí)期,如果需要刷新UI時(shí),需要先取到對應(yīng)的DOM再更新UI,這樣數(shù)據(jù)和業(yè)務(wù)的邏輯就和頁面有強(qiáng)耦合。 在MVVM中,U...

    VioletJack 評論0 收藏0
  • react入門筆記

    摘要:是程序的入口文件自動化測試定義組件擴(kuò)大點(diǎn)擊區(qū)域虛擬的生成數(shù)據(jù)模板數(shù)據(jù)模板生成虛擬虛擬就是一個(gè)對象,用它來描述真實(shí)損耗了性能用虛擬的結(jié)構(gòu)生成真實(shí)的來顯示發(fā)生變化數(shù)據(jù)模板生成新的虛擬極大提升了性能數(shù)據(jù)更新比較原始虛擬和新的虛擬的區(qū)別找到區(qū)別極大 Index.js是程序的入口文件 PWA progressive web application(registerServiceWorker) A...

    Hanks10100 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<