26. React - createContext

index.jsx:

import React from 'react'
import { Provider } from "./context";
import C from "./C";
// const MyContext = React.createContext();
// const { Provider, Consumer } = MyContext;

export default function A() {
    const [count, setCount] = React.useState(0);
    function add() {
        setCount(count => count + 1)
    }
    return (
        <div>
            <div>这是A组件</div>
            <button onClick={add}>加一</button>
            <Provider value={{ count, setCount }}>
                <B />
            </Provider>
        </div>
    )
}

function B() {
    return (
        <div>
            这是B组件
            <C />
        </div>
    )
}
C.jsx:

import { Consumer } from "./context";
export default function C() {
    return (
        <div>
            这是C组件
            <Consumer>
                {
                    value => {
                        debugger
                        return value.count
                    }
                }
            </Consumer>
        </div>
    )
}
context.jsx:

import { createContext } from "react";
const myContext = createContext()
export const { Provider, Consumer } = myContext
当我们在处理祖孙组件或者更深层次的组件时,可以使用React身上的 createContext() 这个方法
执行createContext,可以接收一个实例,并且实例身上有两个API: Provider、Consumer

我们在父组件的中子组件外包裹<Provider></Provider>标签,并向标签传入value属性
在孙组件或者更深层次的组件中使用<Consumer></Consumer>标签来接收传入的值

        <Provider value={{ count, setCount }}>
            <B />
        </Provider>

        <Consumer>
            {
                value =>  value.count   // 传入了count,这里就用value.count接,value代表传入的对象集合
            }
        </Consumer>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容