React高階指引 Context

2021-10-23 11:04:23 字數 2318 閱讀 7929

context 提供了一種在元件之間共享此類值的方式,而不必顯式地通過元件樹的逐層傳遞 props。

context 設計目的是為了共享那些對於乙個元件樹而言是「全域性」的資料,例如當前認證的使用者、主題或首選語言。舉個例子,在下面的**中,我們通過乙個 「theme」 屬性手動調整乙個按鈕元件的樣式:

使用 context, 我們可以避免通過中間元素傳遞 props:

// context 可以讓我們無須明確地傳遍每乙個元件,就能將值深入傳遞進元件樹。

// 為當前的 theme 建立乙個 context(「light」為預設值)。

const themecontext = react.

createcontext

('light');

class

extends

react.component

}// 中間的元件再也不必指明往下傳遞 theme 了。

;

建立乙個 context 物件。當 react 渲染乙個訂閱了這個 context 物件的元件,這個元件會從元件樹中離自身最近的那個匹配的provider中讀取到當前的 context 值。

只有當元件所處的樹中沒有匹配到 provider 時,其defaultvalue引數才會生效。這有助於在不使用 provider 包裝元件的情況下對元件進行測試。注意:將undefined傳遞給 provider 的 value 時,消費元件的defaultvalue不會生效。

context.provider

>

每個 context 物件都會返回乙個 provider react 元件,它允許消費元件訂閱 context 的變化。

provider 接收乙個value屬性,傳遞給消費元件。乙個 provider 可以和多個消費元件有對應關係。多個 provider 也可以巢狀使用,裡層的會覆蓋外層的資料。

class.contexttype

class

myclass

extends

react.component

componentdidupdate()

componentwillunmount()

render()

}myclass.contexttype = mycontext;

掛載在 class 上的contexttype屬性會被重賦值為乙個由react.createcontext()建立的 context 物件。這能讓你使用this.context來消費最近 context 上的那個值。你可以在任何生命週期中訪問到它,包括 render 函式中。

如果你正在使用實驗性的 public class fields 語法,你可以使用static這個類屬性來初始化你的contexttype

class

myclass

extends

react.component

}

react類元件的第四個屬性context

步驟如下 import from react let createcontext provider是生產者,consumer為消費者 傳值的話必須是value myprovider裡的index.js import react,from react let context createcontext...

React高階元件

想想以前用原生和jquery的專案,上千行的code映入眼簾,瞬間有種昏死過去的衝動。難以維護,改乙個bug可能出現n個bug,真的是很痛苦。於是乎元件化成為了當前前端開發的主流技術。angular vue和react很好的幫我們實現了元件化。但是我們常常也會遇到一種情況,就是兩個元件往往有很多的重...

react高階元件

基本概念 函式可以作為引數被傳遞 函式可以作為返回值輸出 元件作為引數被傳遞,返回值是乙個元件 高階元件是乙個函式 案例 將a元件作為公共元件,bc元件作為a函式的引數,來共享顯示a元件 此處紅框是a元件,紅框裡左邊內容為b元件,右邊內容為c元件 1.建立公共的a元件 將元件a封裝成乙個函式,接收乙...