• [React] Context上下文的使用


    1.Context的介绍

    1. Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象,从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。

    2. Context是为了提供一个组件树形结构内的一个数据共享的容器。

    2.为什么需要Context

    在这里插入图片描述

    在这里插入图片描述

    使用Context方式进行数据的共享,各个树状组件均可通过统一的Consumer统一访问全局的Consumer共享数据。

    3.Context的使用

    Context的使用主要分为创建、插入、访问三个流程,通过创建context对象提供共享组件,将Provider指定嵌套至需要使用共享数据的顶层结构,然后各后代组件通过context访问共享数据(变量、常量、方法等)。

    AppContext.js

    import React from "react";
    
    // 初始值为参数
    export const MyContext = React.createContext({name: '1'})
    
    • 1
    • 2
    • 3
    • 4
    import React, {useContext} from 'react';
    import {MyContext} from "./AppContext";
    
    function UseContextPage(props) {
        const ctx = useContext(MyContext)
        return (
            <div>
                <h3>UseContextPage</h3>
                <h3>{ctx.name}</h3>
            </div>
        );
    }
    
    export default UseContextPage;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Provider/Consumer

    import React, {useContext} from "react";
    export const Context = React.createContext()
    const DemoContext = ()=> {
        const value = useContext(Context)
        /* my name is alien */
        return <div> my name is { value.age }</div>
    }
    
    /* 用Context.Consumer 方式 */
    const DemoContext1 = ()=>{
        return <Context.Consumer>
            {/*  my name is alien  */}
            { (value)=> <div> my name is { value.name }</div> }
        </Context.Consumer>
    }
    
    // 提供者
    export default function UseContext(){
        return <div>
            <Context.Provider value={{ name:'alien', age: 11}} >
                <DemoContext />
                <DemoContext1 />
            </Context.Provider>
        </div>
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    机器学习性能评估指标
    橙河网络:国外答题问卷赚钱可靠吗?
    git_笔记
    # 技术栈知识点巩固——消息队列
    day23-数据接口和selenium基础
    用Selenium自动化Web应用测试!
    ARM 中常用的汇编指令解释汇总
    每天一个知识点-如何保证缓存一致性
    汽车零部件行业困境及如何利用MES解决?
    MySQL常用指令
  • 原文地址:https://blog.csdn.net/qq_43141726/article/details/133392738