在乙個典型的react專案中,資料是通過props屬性自上而下的(由父及子)進行傳遞,但是這種做法對於某些型別的屬性而言是極其繁瑣的(例如:地區偏好,ui主題),這些屬性是應用程式中許多元件都需要的。context提供了一種在元件之間共享此類值的方式,而不必顯示地通過元件樹的逐層傳遞props
第一步在src資料夾下建立utils資料夾,並建立themecontext.js檔案,以及其他元件
3.在themecontext檔案下書寫一下**(用來建立公用的context)
import react from "react";
//建立context 農民種菜 如果沒有匹配到provider取預設值
export const themecontext = react.createcontext();
//接收者 批發商批發菜
export const themeprovider = themecontext.provider;
//消費者 吃菜
export const themeconsumer = themecontext.consumer;
,並在爺爺元件引入父親元件list
import react, from "react";
import from "../src/utils/themecontext";
import contexttypepage from "../src/components/list";
//使用context 步驟
//1.建立createcontext
接收value,以保證又傳下去的資料
//3.接收consumer或者class.contexttype
class contextpage extends component ,
};} render() = this.state;
return (
);}}
export default contextpage;
5.在list檔案裡書寫父親元件list,並在爺爺元件引入孫子元件item
import react, from "react";
import item from "./item";
export default class list extends component
}
6.孫子元件item,方法一:使用static子元件進行資料的展示和渲染
import react, from "react";
import from "../utils/themecontext";
export default class item extends component = this.context;
在任何宣告週期都可以訪問到
return (
);}}
7.孫子元件item,方法二:使用consumer子元件進行資料的展示和渲染
import react from "react";
import from "../utils/themecontext";
export default function item(props)
} );}
這樣就實現了跨級傳參
1.建立context物件, 如果沒有匹配到provider取預設值
export const themecontext = react.createcontext();2.provier 接收value,以保證又傳下去的資料
3.接收consumer或者class 的static
使用consumer
import react from "react";
import from "../utils/themecontext";
export default function item(props)
} );}
使用static
import react, from "react";
import from "../utils/themecontext";
export default class item extends component = this.context;
在任何宣告週期都可以訪問到
return (
);}}
React之Context跨級元件傳值
例如 react redux 的原理就是利用了跨級傳參的方法實現的,其中的好處不言而喻 在單純的父子傳參中this.props就可以了。子傳父也是通過呼叫父元件的方法去改變引數變化,假如在企業專案中不 只是單純的父子傳參,還有爺爺元件和孫子元件或者重孫玄孫甚至可能.玄玄玄孫等等,就好比自己的親戚的七...
react元件跨層級通訊context
react 中使 context 實現祖代元件向後代元件跨層級傳值。vue中的 provide inject 於context context api react.createcontext 建立 個 context 物件。當 react 渲染 個訂閱了這個context 物件的元件,這個元件會從元...
React高階指引 Context
context 提供了一種在元件之間共享此類值的方式,而不必顯式地通過元件樹的逐層傳遞 props。context 設計目的是為了共享那些對於乙個元件樹而言是 全域性 的資料,例如當前認證的使用者 主題或首選語言。舉個例子,在下面的 中,我們通過乙個 theme 屬性手動調整乙個按鈕元件的樣式 使用...