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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
慕課專欄

目錄

索引目錄

剖析 React 內(nèi)部運(yùn)行機(jī)制

原價(jià) ¥ 58.00

立即訂閱
04 React 世界中那些重要的概念
更新時(shí)間:2020-08-11 15:13:13
讀一本好書,就是和許多高尚的人談話。——歌德

前言

上一章提到 React 通過 ReactDOM.render 函數(shù)將應(yīng)用程序首次渲染到屏幕,ReactDOM.render 函數(shù)中的兩個(gè)重要的參數(shù)分別是 React 元素(element)和容器(container)。**事實(shí)上,開發(fā)者寫的應(yīng)用程序一般由眾多「組件」組成,為什么在渲染時(shí)會(huì)以「元素」的形式傳染到渲染函數(shù)中呢?**要想弄清楚這個(gè)問題,我們需要對 React 世界中的組件與元素進(jìn)行深入了解。

圖片描述

圖 2.1.1 ReactDOM.render 函數(shù)的兩個(gè)重要參數(shù)

通過執(zhí)行ReactDOM.render函數(shù) React 將應(yīng)用程序首次渲染到屏幕。在這個(gè)渲染流程中,React 需要先后經(jīng)歷組件轉(zhuǎn)換元素、解析更新與更新隊(duì)列、調(diào)用生命周期函數(shù)等操作,在這些操作的背后離不開基礎(chǔ)理論體系的支撐。

那么,在 React 世界中有哪些重要的基礎(chǔ)概念呢?

重要的基礎(chǔ)概念

  • 組件:可以是一個(gè)函數(shù)或一個(gè)類。
  • 生命周期函數(shù):在應(yīng)用程序運(yùn)行的特定階段執(zhí)行對應(yīng)的函數(shù)。
  • 元素:一個(gè)普通 JS 對象,由組件轉(zhuǎn)化而來,在運(yùn)行時(shí)再轉(zhuǎn)化為 React fiber 對象。
  • 組件實(shí)例:類組件實(shí)例化后的對象,主要作用是返回組件元素、響應(yīng)事件等。
  • 更新(update):一個(gè) JS 對象,包含過期時(shí)間(expirationTime)和更新內(nèi)容(payload)等。
  • 更新隊(duì)列(updateQueue):一個(gè) JS 對象,是更新(update)的集合,鏈表結(jié)構(gòu)。
  • React Fiber:React v16 版本開始引入的架構(gòu)。

這些重要的基礎(chǔ)概念之間有什么關(guān)系呢? 見圖 2.1.2。

圖片描述

圖 2.1.2 React 世界中重要基礎(chǔ)概念之間的關(guān)系

React 組件一般由開發(fā)者定義,應(yīng)用程序運(yùn)行時(shí) React 為 class 類型的組件創(chuàng)建組件實(shí)例。在應(yīng)用程序渲染的不同階段 React 會(huì)執(zhí)行組件實(shí)例上面對應(yīng)的生命周期函數(shù)以及獲取其 state 和 props。此外,React 通過組件實(shí)例調(diào)用組件的render函數(shù)獲取到該組件內(nèi)部的元素。在 render 階段 React 將元素逐個(gè)轉(zhuǎn)換為對應(yīng)類型的 Fiber 結(jié)點(diǎn)(最終形成 workInProgress 樹)。

當(dāng)組件內(nèi)部有this.setState( ... )操作時(shí),React 首先根據(jù)this對象找到對應(yīng)的 Fiber 結(jié)點(diǎn),然后將更新加入到當(dāng)前 Fiber 結(jié)點(diǎn)的更新隊(duì)列。

注:上面組件生成組件實(shí)例,組件實(shí)例返回元素等邏輯在后面會(huì)進(jìn)行詳細(xì)介紹。

你真正理解 React 組件嗎?下一節(jié)將會(huì)詳細(xì)介紹 React 組件的設(shè)計(jì)思想。

}
立即訂閱 ¥ 58.00

你正在閱讀課程試讀內(nèi)容,訂閱后解鎖課程全部內(nèi)容

千學(xué)不如一看,千看不如一練

手機(jī)
閱讀

掃一掃 手機(jī)閱讀

剖析 React 內(nèi)部運(yùn)行機(jī)制
立即訂閱 ¥ 58.00

舉報(bào)

0/150
提交
取消