千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  context祖孙传值是什么?

context祖孙传值是什么?

来源:千锋教育
发布人:lx
时间: 2023-05-15 17:57:46

context祖孙传值

  1、父组件

import React from "react";
import LearnContext2 from "./LearnContext2";

const MyContext = React.createContext();

export default class LearnContext extends React.Component {
state = {
num: 1,
};

/**
* 接收所有层级的子组件返回的消息
* @param {} msg
*/

getChildData = (msg) => {
console.log(msg);
};

render() {
return (
<div>
<div>父级组件</div>
<MyContext.Provider
/**
* 给所有的子级组件传一个num的值
* 并且传一个方法 让他们也可以和父级组件通讯
*/
value={{ num: this.state.num, getChildData: this.getChildData }}
>

<LearnContext2></LearnContext2>
</MyContext.Provider>
</div>

);
}
}

 

  2、子组件

import React from "react";
import LearnContext3 from "./learn-context3";

export default class LearnContext2 extends React.Component {
render() {
return (
<div>
<div>子组件</div>
<LearnContext3></LearnContext3>
</div>

);
}
}

 

  3、孙组件

  使用 Consumer 接收传下来的context

import React from "react";
import { MyContext } from "./learn-context";

class LearnContext3 extends React.Component {

render() {
return (
<MyContext.Consumer>
{/*
直接使用Consumer
这种方式获取参数
但是这种方式 不方便在render意外的地方使用传下来的参数
*/}
{(context) => (
<div>
<div>孙组件</div>
<div>爷爷——传下来的{context.num}</div>
<button onClick={() => context.onChildHandle('哈喽爷爷')}>给爷爷问声好</button>
</div>
)}
</MyContext.Consumer>

);
}
}

export default LearnContext3;

 

  使用contextType 接收context

import React from "react";
import { MyContext } from "./learn-context";

class LearnContext4 extends React.Component {

// 可以直接在类里面使用static 声明静态属性
static contextType = MyContext

render () {
return (
<div>
<div>孙组件</div>
{/*
当我们把context挂载到当前组件的contextType的时候
就可以直接使用this.context拿到相关的值
*/}
<div>爷爷——传下来的{this.context.num}</div>
<button onClick={() => this.context.onChildHandle('哈喽爷爷')}>给爷爷问声好</button>
</div>

)
}
}

// 也可以直接在这上面进行赋值
LearnContext4.contextType = MyContext

export default LearnContext4

 

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

什么是Concurrent React?

2023-05-09

为什么map的时候要加key?

2023-05-09

为什么会出现ref?

2023-05-05

最新文章NEW

useLayoutEffect和useEffect有哪些不同?

2023-05-09

什么是redux?

2023-05-05

vue的计算属性,特性,应用是什么?

2023-04-27

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>