先做数据源store.js文件

// 状态 store 统一数据源
import React, { createContext } from 'react' // Provider 发布消息
// Consumer 对于发布的消息进行消费(接受)
let { Provider, Consumer } = createContext() export {
Provider,
Consumer
}

App文件

import React, { Component } from 'react'
import Cmp1 from './components/Cmp1'
import Cmp2 from './components/Cmp2' // 统一的数据源
import { Provider } from './context/store' // 只有在类组件中才有生命周期
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
title: '你好世界'
}
} render() { return (
<div>
{/* 多层组件之间的通信 发布一下,子孙们,祖先有数据给你们 */}
<Provider value={this.state.title}>
<Cmp1 />
<Cmp2 />
</Provider>
</div >
)
} }

Cmp1文件

import React, { Component } from 'react';
import Cmp2 from './Cmp2'; // 统一数据源
import { Consumer } from '../context/store' class Cmp1 extends Component {
render() {
return (
<div>
<Cmp2 />
    {/* <Consumer> 父级不想消费
          {value => <h3>{value}</h3>}
        </Consumer> */}
      </div>
);
}
} export default Cmp1;

Cmp2文件

import React, { Component } from 'react'

// 统一的数据源
import { Consumer } from '../context/store' class Cmp2 extends Component {
render() {
return (
<div>
cmp2---得到数据
<hr/>
{/* 消费一下 */}
<Consumer>
{
value=><h1>{value}</h1>
}
</Consumer>
</div>
);
}
} export default Cmp2;

react祖先与子孙多层传值的更多相关文章

  1. React使用DVA本地state传值取值

    React使用DVA本地state传值取值 最近在用Ant Pro 做一个后台系统,在使用中发现Antd Pro使用DVA来实现redux+sagas+router一系列的功能,比传统方式要方便快捷的 ...

  2. Vue.js最佳实践--给大量子孙组件传值(provide/inject)

    开发中有个需求,有个Parent组件(例如div)下,输入框,下拉框,radiobutton等可编辑的子孙组件几百个,根据某个值统一控制Parent下面的所有控件的disabled状态 类似于这样,给 ...

  3. VUE004. provide与inject的使用(祖先组件隔多层传静态值给子孙组件)

    provide和inject可以通过祖先组件隔三层四层甚至隔着九层妖塔传值给子孙组件. 需要注意的是这样的传值方式是非响应式的,需要结合自身的应用场景,比如将上传的限制条件通过父组件传值给子组件的子组 ...

  4. React子组件与父组件传值

    一 子组件向父组件传值 //子组件var Child = React.createClass({ render: function(){ return ( <div> 请输入邮箱:< ...

  5. React学习笔记(三) 组件传值

    组件嵌套后,父组件怎么向子组件发送数据呢? 答案是: this.props <script type="text/babel"> var MyFirst = React ...

  6. 使用React.cloneElement()给子组件传值

    React提供了一个克隆组件的API: React.cloneElement( element, [props], [...child] ) 可以利用该方法,给子组件传值,使用如下: class Pa ...

  7. React组件之间通过Props传值的技巧(小案例,帮助体会理解props、state、受控组件和非受控组件等)

    本文重要是根据react小书上的一个很简单的例子改编的,加上自己的学习理解,希望可以通过实际案例让大家对概念有更清晰的理解,当然也希望能一块学习. import React,{Component} f ...

  8. React之父子组件之间传值

    1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...

  9. React父子组件间的传值

    父组件: import React, { Component } from 'react'; import Child from './chlid'; class parent extends Com ...

  10. react 点击事件+父子传值

    接下来要做的效果是,在父组件添加两个按钮,点击后改变父组件传过去的值 父组件 import React, { Component } from 'react'; import Test from '. ...

随机推荐

  1. 推荐一波微软家的浏览器:EDGE

    前段时间英雄联盟(LOL)队伍 EDG 夺冠成为热门事件,上了各大热搜,即使大家不玩英雄联盟,相信也多多少少有听说相关信息吧! 今天我们的主角并不是 EDG,而是微软的新版浏览器 EDGE !!! 微 ...

  2. NOIP模拟四

    NOIP模拟四 number 题目描述 现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\). 定义这些点的一张异或图为: 先选定一个集合 \(S\). 对于原图上编号为 \(x\) 和 ...

  3. JVM简明笔记3:类加载机制

    1 类的加载 类的加载指的是将类的 .class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class 对象,用来封装类在方法区内的数据结 ...

  4. 入门即享受!coolbpf 硬核提升 BPF 开发效率 | 龙蜥技术

    简介: 干货必备!何为享受式开发? 编者按:BPF 技术还在如火如荼的发展着,本文先通过对 BPF 知识的介绍,带领大家入门 BPF,然后介绍 coolbpf 的远程编译(原名 LCC,LibbpfC ...

  5. [FAQ] WebStorm/PHPStorm:设置 HTML/JavaScript/PHP 注释缩进行为,代码片段

    [注释行为] Preferences -> Code Style 选择语言后,找到 Wrapping and Braces, 取消 Comment at first column. 如果是HTM ...

  6. dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现

    本文来记录一个我自己在使用的 NTP 时间校准客户端的实现 核心方法是在国内使用 腾讯 和 阿里 提供的 NTP 时间服务器来获取网络时间,如果连接不上,再依次换成 国家服务器 和 中国授时 服务,如 ...

  7. 2018-12-27-WPF-从-DrawingVisual-转-BitmapImage-图片

    title author date CreateTime categories WPF 从 DrawingVisual 转 BitmapImage 图片 lindexi 2018-12-27 11:3 ...

  8. 从改一个老项目开始的PHP踩坑记

    php所有版本的地址: https://windows.php.net/downloads/releases/archives/ 访问控制器时省略了index.php报No input file sp ...

  9. Oracle、达梦:生成32位字符串(ID)

    15.生成32位字符串 达梦.oracle 函数:sys_guid().newid() 转小写LOWER(char) select rawtohex(sys_guid()); -- 推荐使用newid ...

  10. 普冉PY32系列(十五) PY32F0系列的低功耗模式

    目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...