React系列學習筆記2 元素渲染

2021-09-12 18:01:47 字數 2139 閱讀 9174

將元素渲染到 dom 中

更新元素渲染

元素是構成 react 應用的最小單位,它用於描述螢幕上輸出的內容。

const element = ;
與瀏覽器的 dom 元素不同,react 當中的元素事實上是普通的物件,

reactdom

可以確保瀏覽器 dom 的資料內容與 react 元素保持一致。

首先我們在乙個 html 頁面中新增乙個id="example"

:

在此div中的所有內容都將由

reactdom

來管理,所以我們將其稱為 "根" dom節點。

我們用 react 開發應用時一般只會定義乙個根節點。但如果你是在乙個已有的專案當中引入 react 的話,你可能會需要在不同的部分單獨定義 react 根節點。

要將react元素渲染到根dom節點中,我們通過把它們都傳遞給

reactdom.render()

的方法來將其渲染到頁面上:

const element = ;

reactdom.render(

element,

document.getelementbyid('example')

);

react 元素都是不可變的。當元素被建立之後,你是無法改變其內容或屬性的。

目前更新介面的唯一辦法是建立乙個新的元素,然後將它傳入

reactdom.render()

方法:

來看一下這個計時器的例子:

function tick() 

setinterval(tick, 1000);

以上例項通過 setinterval() 方法,每秒鐘呼叫一次 reactdom.render()。

從這裡就可以看出react渲染能力的強大。在傳統頁面的dom渲染中,往往會將新的dom替換掉舊的dom結構。react通過強大的dom diff演算法跳過已經存在的dom而渲染那些發生改變的dom中的改變的內容。也就是說

react dom 首先會比較元素內容先後的不同,而在渲染過程中只會更新改變了的部分。

具體效果我們可以檢視下面的動態圖

另外,我們可以將要展示的部分封裝

起來,以下例項用乙個函式來表示:

function clock(props) 

function tick()

setinterval(tick, 1000);

除了函式外我們還可以建立乙個

react.component

的 es6 類,該類封裝了要展示的元素

class clock extends react.component 

}function tick()

setinterval(tick, 1000);

需要注意的是,

改版之後的寫法需要注意一下兩點: 在

render()

方法中使用es6類的寫法時,需要用

this.props.屬性名

來取值。

可以多從

props

來傳值,在

reactdom.render

定義屬性,傳給呼叫方法,再在呼叫的es6類的呼叫中用

props.屬性名

直接賦值過去。

class name extends react.component 

}class *** extends react.component

}class age extends react.component

} return (

);}//多個屬性的傳入注意不用逗號或分號隔開而是空格符隔開

reactdom.render(

document.getelementbyid('example')

);

WPF學習系列003 2 2 元素和特性

2.2 元素和特性 在 xaml 中定義乙個 xml元素 叫作物件元素 與在 net 中例項化乙個對應的物件 總是使用預設的建構函式 是等價的。xaml 元素 net 物件設定物件元素的乙個特性 attribute 與設定乙個同名屬性 property attribute 稱為屬性特性 或者為乙個同...

CSS學習筆記 六 元素定位

盒模型,就是瀏覽器為頁面中的每個 html 元素生成的矩形盒子。這些盒子們都要按照可見版式模型 visual formatting model 在頁面上排布。可見的頁面版式主要由三個屬性控制 position 屬性 display 屬性和 float 屬性。其中,position 屬性控制頁面上元素...

HTML CSS基礎學習筆記1 33 元素選擇器

元素選擇器 最常見的 css 選擇器是元素選擇器。換句話說,文件的元素就是最基本的選擇器 p什麼情況下使用元素選擇器,一般我們這樣認為 如果你想要讓頁面中所有的指定元素都有這個css效果,可以使用元素選擇器。有這樣一段html 撐著油紙傘,獨自 彷徨在悠長,悠長 又寂寥的雨巷,我希望逢著 乙個丁香一...