React-Context传值

 接收值的方法

1. 使用函数

<ThemeContext.Consumer>
    {value => (
        <span>{value}</span>
    )}
</ThemeContext.Consumer>

2. 类组件中

 static contextType = ThemeContext;

<p>来自A组件的数据:{this.context}</p>

3.函数组件中

const value = useContext(MyContext);

ThemeContext.js文件

import { createContext } from "react";

const ThemeContext = createContext();

ThemeContext.displayName = "themeContext";
ThemeContext.msg = {
  one: '好耶111',
  two: '好耶222',
}

export default ThemeContext;

祖文件

import React, { Component, createContext } from 'react'

import ContextChild1 from './ContextChild1';
// import ContextChild2 from './ContextChild2';
import ThemeContext from './ThemeContext';

export default class Context extends Component {
  render() {
    return (
      <ThemeContext.Provider value="dark">
        <h1>Context</h1>
        <ContextChild1 />
        {/* <ContextChild2 />/ */}

      </ThemeContext.Provider>
    )
  }
}

ContextChild1 

import React, { Component } from 'react'
import ThemeContext from "./ThemeContext";
import ContextChild2 from './ContextChild2';

export default class ContextChild1 extends Component {
  static contextType = ThemeContext
  componentDidMount() {
    console.log(this.context)
  }
  render() {
    return (
      <div>ContextChild1
        <ThemeContext.Consumer>
          {value => (
            <span>{value}</span>
          )}
        </ThemeContext.Consumer>
        <hr />
        <p>来自A组件的数据:{this.context}</p>
        <ContextChild2></ContextChild2>
      </div>
    )
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值