重温react-08(createContext使用方式)

react中的createContext使用方式

简介一下,就是组件之间可以互相通信的比较好用的传值方式,话不多说直接上代码。

以下介绍的是类组件中的方式,在函数组件中不是如此使用的。

定义一个通用的方法

javascript 复制代码
import { createContext } from "react";
const Context = createContext();

// Content有两个属性
//    1. Provider 数据提供者
//    2. Consumer 数据使用者

const { Provider, Consumer } = Context;
export {
    Provider,
    Consumer
}

现在是数据提供者的页面代码

javascript 复制代码
const data = {
    name: 'John Doe',
    age: 30,
    hobbies: ['reading', 'painting', 'traveling']
}
root.render(
  <React.StrictMode>
    <Provider value={data}>
    <App />
    </Provider>
    
  </React.StrictMode>
);

就是把这个data传过去了,不论是子代组件还是孙子组件都可以使用这个传参方法,如果组件套的层级太深了的话,要一层一层传不方便,但是用这个方式就简单很多。

儿子组件使用方式(代码片段)

javascript 复制代码
import React from 'react';
import { Consumer } from './context/index'
import LearnFunction04 from './LearnFunction04'; //  useEffect第二个参数的用法
export default function boxReact() {
  return (
    <div>
       <Consumer>
        {
          (data) => {
            console.log(data);
            return <div>{data.name}</div>
          }
        }
      </Consumer> 
    </div>
  )
}

孙子组件使用方式

javascript 复制代码
import React, { Component } from 'react'
import {Consumer} from './context/index'
export default class LearnFunction04 extends Component {
    render() {
        return (
            <Consumer>
                {
                    (data) => {
                      return  <div>{data.name}</div>
                    }
                }
            </Consumer>

        )
    }
}

后代所有组件的方式都是如同孙子组件的使用方式

相关推荐
AlienZHOU4 分钟前
AI Coding 时代下,我的技术面试实践分享
前端·后端·面试
刺客码3 小时前
Layui 表格固定列行高错位问题解决方案
前端框架·layui·jquery·web
Captaincc3 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
计算机魔术师5 小时前
德国Wiki被黑后两周,OpenAI终于把模型失控的账本摊开了
前端
kyriewen5 小时前
我让 AI 当面试官面了我一轮:第 3 个追问我就卡住了(附 10 道追问清单)
前端·面试·ai编程
IT_陈寒5 小时前
Python的GIL把我坑惨了,多线程跑得比单线程还慢
前端·人工智能·后端
前端snow6 小时前
ai agent --- 多agent框架之图编排引擎-langgraph
前端
竹林8186 小时前
OmniPic Studio v3.2.1 核心技术架构与全平台发版解析文档
前端·浏览器
JamesZhang800786 小时前
页面内存只涨不跌? 一次泄漏排查, 牵出 WeakMap 的诞生
前端
Z小明6 小时前
第 6 章 组件进阶
前端·vue.js