React之 Context跨級元件傳值

2021-10-13 09:51:26 字數 2530 閱讀 5164

在乙個典型的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 屬性手動調整乙個按鈕元件的樣式 使用...