日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
你知不知道Reactlanes到底咋用啊?

大家好,我卡頌。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),高縣企業(yè)網(wǎng)站建設(shè),高縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,高縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,高縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

很多朋友知道React內(nèi)部有個(gè)lane的概念,但不知道怎么用。

React中存在不同功能的lane,本文通過(guò)講解其中最重要的一種lane來(lái)達(dá)到讓你理解lane如何使用的目的。

lane的含義

想必你對(duì)如下代碼再熟悉不過(guò)了:

// 對(duì)于ClassComponent
onClick() {
this.setState({a: 100})
}
// 對(duì)于FunctionComponent
const [updateNum, num] = useState(0);

其中this.setState或updateNum的執(zhí)行會(huì)觸發(fā)更新。每個(gè)更新對(duì)應(yīng)一個(gè)lane。

所以當(dāng)我們這么寫(xiě)代碼:

onClick() {
this.setState({a: 100})
this.setState({b: 'hello'})
this.setState({c: true})
}

就會(huì)觸發(fā)很多更新(這些更新會(huì)被合并在一起處理,這里按下不表)。

除了「在一個(gè)組件的回調(diào)中同時(shí)觸發(fā)多個(gè)更新」,我們也經(jīng)常會(huì)「在不同組件的回調(diào)中觸發(fā)更新」。

這兩種情況都會(huì)產(chǎn)生一種結(jié)果:應(yīng)用中同時(shí)存在一到多個(gè)lane。

這就是lane的意義:他與更新對(duì)應(yīng)。

lane與lanes

lane與更新對(duì)應(yīng),更新與狀態(tài)對(duì)應(yīng),狀態(tài)與UI對(duì)應(yīng)。

UI的變化通常是多個(gè)不同狀態(tài)變化的結(jié)果,一路追溯回去,就與一到多個(gè)lane對(duì)應(yīng)。

如何用一個(gè)變量表達(dá)「一到多個(gè)lane」呢?這就是lanes。

lane與lanes都是「31位二進(jìn)制」,所以lanes可以很方便的表達(dá)「一到多個(gè)lane」,比如:

const laneA = 0b0001;
const laneB = 0b0010;
// lanes === 0b0011,lanes包含A和B
const lanes = laneA | laneB;

root.pendingLanes

lanes本身僅僅代表「lane的集合」,他的具體含義需要考慮「構(gòu)成集合的lane的含義」。

本文講解的lanes叫root.pendingLanes。

對(duì)于一個(gè)龐大的應(yīng)用,在同一時(shí)間,可能有很多組件會(huì)觸發(fā)更新,就對(duì)應(yīng)很多l(xiāng)ane。他們被統(tǒng)一保存在root.pendingLanes中。

可以認(rèn)為,root.pendingLanes中記錄了「應(yīng)用中所有待執(zhí)行的更新對(duì)應(yīng)的lane」。

工作流程

當(dāng)觸發(fā)更新后,更新對(duì)應(yīng)的lane會(huì)附加在root.pendingLanes中,代表「待執(zhí)行的lane又增加一個(gè)」。

接下來(lái)React會(huì)從root.pendingLanes中選擇一批lane組成lanes,作為本次render時(shí)需要考慮的lanes(這批lanes對(duì)于不同組件來(lái)說(shuō),對(duì)應(yīng)不同更新,最終對(duì)應(yīng)UI的變化)。

接下來(lái)開(kāi)始每個(gè)組件的render。

我們知道,組件render時(shí)獲取的狀態(tài)就是組件當(dāng)前狀態(tài),而狀態(tài)的值最終與lane相關(guān)。所以,這一步是消費(fèi)lane獲取狀態(tài)的過(guò)程。

最后,當(dāng)頁(yè)面完成渲染,root.pendingLanes中會(huì)移除「本次render時(shí)使用的lanes」(即上一步消費(fèi)的lane)。

如此反復(fù),直到root.pendingLanes為空。這就是root.pendingLanes的工作流程。

總結(jié)

root.pendingLanes只是眾多l(xiāng)anes之一,但他關(guān)系到React整個(gè)更新流程。

其他lanes都是在這個(gè)流程中的某些部分發(fā)揮作用。


網(wǎng)站題目:你知不知道Reactlanes到底咋用啊?
URL網(wǎng)址:http://m.5511xx.com/article/dpgococ.html