重温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>

        )
    }
}

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

相关推荐
apcipot_rain1 小时前
【应用密码学】实验五 公钥密码2——ECC
前端·数据库·python
油丶酸萝卜别吃1 小时前
OpenLayers 精确经过三个点的曲线绘制
javascript
ShallowLin1 小时前
vue3学习——组合式 API:生命周期钩子
前端·javascript·vue.js
Nejosi_念旧1 小时前
Vue API 、element-plus自动导入插件
前端·javascript·vue.js
互联网搬砖老肖1 小时前
Web 架构之攻击应急方案
前端·架构
pixle02 小时前
Vue3 Echarts 3D饼图(3D环形图)实现讲解附带源码
前端·3d·echarts
麻芝汤圆2 小时前
MapReduce 入门实战:WordCount 程序
大数据·前端·javascript·ajax·spark·mapreduce
juruiyuan1114 小时前
FFmpeg3.4 libavcodec协议框架增加新的decode协议
前端
Peter 谭5 小时前
React Hooks 实现原理深度解析:从基础到源码级理解
前端·javascript·react.js·前端框架·ecmascript
周胡杰5 小时前
鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
javascript·windows·flutter·华为·harmonyos·鸿蒙·鸿蒙系统