React Context使用

注意:
以下內(nèi)容大部分內(nèi)容根據(jù)官方文檔進行的倾芝,由于技術(shù)在不斷更新论衍,一切以官方文檔為準堰燎。

說明:
Context 提供了一種在組件之間共享此類值的方式,而不必顯式地通過組件樹的逐層傳遞 props淆储。

何時使用:
共享那些對于一個組件樹而言是“全局”的數(shù)據(jù)冠场,例如當前認證的用戶、主題或首選語言本砰。

API:

  1. React.createContext(容器)

createContext(默認值)碴裙,創(chuàng)建一個context。
context內(nèi)包含了 Provider点额、Consumer舔株。
使用的時候需要把它們兩個解構(gòu)出來。

import React, { createContext } from 'react'
const { Provider, Consumer } = createContext('默認名稱')
  1. Provider(生產(chǎn)者)
  2. Consumer(消費者)

示例:
父組件:Father.js

import React, { Component , createContext} from 'react'
//下面這行拋出是為了Father下的子組件可以從這里引入
export const {Provider,Consumer} = createContext("默認名稱");
//以上兩行寫法还棱,是我個人比較習(xí)慣的载慈,接下來注釋的兩行是另一種寫法。
//import React from 'react';
//export const {Provider,Consumer} = React.createContext("默認名稱");
import Son from './son'


export default class Father extends Component {
    render() {
        return (
            <>
                <Provider value='我是要傳遞的值珍手!'>
                    <h2>父組件</h2>
                    <Son />
                </Provider>
            </>
        )
    }
}

子組件:Son.js

import React, { Component } from 'react'

//引入父組件的Consumer容器
import { Consumer } from './father'
import Grandson from './grandson'

export default class Son extends Component {
    render() {
        return (
            <div>
                <Consumer>
                    {
                        // 回調(diào)函數(shù)办铡,第一個參數(shù)(自定義)可以取到父組件注入的值。
                        (name) =>
                            <>
                                <hr />
                                <h2>子組件</h2>
                                <p> 獲取父組件的值:{name}</p>
                                <Grandson />
                            </>
                    }
                </Consumer>
            </div>
        )
    }
}

孫組件:grandson.js

import React, { Component } from 'react'
import { Consumer } from './father'

export default class Grandson extends Component {
    render() {
        return (
            <div>
                <Consumer>
                    {
                        (name) => {
                            //較于子組件的回調(diào)珠十,我這里用了另一種料扰,也可以實現(xiàn)凭豪。
                            return (
                                <>
                                    <hr />
                                    <h3>孫組件</h3>
                                    <p>獲取爺組件的值:{name}</p>
                                </>
                            )
                        }
                    }
                </Consumer>
            </div>
        )
    }
}

(九月萩)

在學(xué)習(xí)過程中焙蹭,不僅多謝官方文檔的幫助,還有以下的幫助嫂伞,謝謝各位的分享孔厉。

《React Context(上下文) 作用和使用 看完不懂 你打我》
《React 中 Context》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市帖努,隨后出現(xiàn)的幾起案子撰豺,更是在濱河造成了極大的恐慌,老刑警劉巖拼余,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件污桦,死亡現(xiàn)場離奇詭異,居然都是意外死亡匙监,警方通過查閱死者的電腦和手機凡橱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門小作,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稼钩,你說我怎么就攤上這事顾稀。” “怎么了坝撑?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵静秆,是天一觀的道長。 經(jīng)常有香客問我巡李,道長抚笔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任侨拦,我火速辦了婚禮塔沃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阳谍。我一直安慰自己蛀柴,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布矫夯。 她就那樣靜靜地躺著鸽疾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪训貌。 梳的紋絲不亂的頭發(fā)上制肮,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音递沪,去河邊找鬼豺鼻。 笑死,一個胖子當著我的面吹牛款慨,可吹牛的內(nèi)容都是我干的儒飒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼檩奠,長吁一口氣:“原來是場噩夢啊……” “哼桩了!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起埠戳,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤井誉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后整胃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颗圣,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了在岂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荚藻。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洁段,靈堂內(nèi)的尸體忽然破棺而出应狱,到底是詐尸還是另有隱情,我是刑警寧澤祠丝,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布疾呻,位于F島的核電站,受9級特大地震影響写半,放射性物質(zhì)發(fā)生泄漏岸蜗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一叠蝇、第九天 我趴在偏房一處隱蔽的房頂上張望璃岳。 院中可真熱鬧,春花似錦悔捶、人聲如沸铃慷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犁柜。三九已至,卻和暖如春堂淡,著一層夾襖步出監(jiān)牢的瞬間馋缅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工绢淀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萤悴,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓皆的,卻偏偏與公主長得像覆履,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祭务,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360