组件跨层级通信 - Context

  • 上下文提供一种不需要每层设置props就能跨多级组件传递数据的方式

方式1

  • Provider提供值
  • Consumer来消费传递的值
import React from 'react';// 创建一个上下文
const Mycontext = React.createContext();
const { Provider, Consumer } = MyContext;function Child(prop) {return <div>Child: {prop.foo} </div>
}export default function ContextTest() {return (<div><Provider value ={ {foo: 'bar'} }><Consumer>// 将value的孩子展开{value => <Child {...child} />}</Consumer></Provider></div>)
}

方式2

  • 使用hook来消费(useContext)
import React, {useContext} from 'react';
const { Provider } = MyContext;const MyContext = React.createContext();// 使用hook消费
function Child2() {// 使用useContext来获取传递过来的参数,放在ctx里面const ctx = useContext(MyContext);return <div>Child2: {ctx.foo} </div>
}export default function ContextTest() {return (<div><Provider value={{foo: 'bar'}}><Child2></Child2></Provider></div>)
}

方式3

  • 使用class指定静态contextType
import React from 'react'
const MyContext = React.createContext();class Child3 extends React.Component{static contextType = MyContext;render(){return <div>Child3: {this.context.foo}</div>}
}export default function ContextTest() {return (<div><Provider value={{foo: 'bar'}}><Child3></Child3></Provider></div>)
}

react --- 隔代传递参数的三种方式相关推荐

  1. Mybatis传递参数的三种方式

    第一种: Dao层使用@Param注解的方法 VersionBox getVersionByVersionNumAndVersionType(@Param("versionNum" ...

  2. mybatis 传递参数的三种方式

    mybatis 框架的主要工作是数据层, 侧重于与数据库打交道的sql语句的编写,对sql也要求比较熟练. mybatis 传递参数的方式主要有三种: 1. 多个参数的传递方式    形式如:    ...

  3. 向函数传递结构的三种方式

    向函数传递结构的三种方式 零.写在前面 在程序设计的过程当中,我们经常会涉及到选择数据的类型,在很多情况下,单单是普通的变量和数组并不足以满足我们的需求,这时候,C语言为我们提供了一种计较好用的数据类 ...

  4. 表单提交和超链接请求传递参数的几种方式

    表单提交和超链接请求传递参数的几种方式 这段时间在使用easy-ui的datagrid,他有自己提交表单的方式,所以就整理整理页面对参数的提交方式: 注:下面代码都已经过测试. 1. HTML提交表单 ...

  5. 命令行运行Python脚本时传入参数的三种方式

    三种常用的方式 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. python script.py 0,1,2 10 python script ...

  6. vue-router 传递参数的几种方式

    本文转载自:https://blog.csdn.net/crazywoniu/article/details/80942642 vue-router传递参数分为两大类 编程式的导航 router.pu ...

  7. [转]Delphi过程函数传递参数的几种方式

    在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out.另一种不加修饰符的为默认按值传递参数. 一.默认方式以值方式传递参数 procedure TForm1.ProcNormal( ...

  8. Flink获取外部传递参数的两种方式

    目录 一.前言 二.实现 2.1 通过参数方式直接传递 2.2 通过配置文件来获取参数值 一.前言 在Flink中,我们会对接Kafka,Kafka的参数比较多,如果我们希望通过灵活的方式修改参数,而 ...

  9. JSP中页面向Action传递参数的几种方式

    转自:http://zhidao.baidu.com/link?url=kEOyifTghb--LvcQVpkh-kkpgZIcYU-dlqQyNM5e3b_9fywiDQGVxAOHVedJkqGA ...

最新文章

  1. 争取做一个良性循环的程序员
  2. linux存储--mmap与sendfile(十七)
  3. linux鉴于它没有文件拓展名,linux中的文件类型以及查看文件类型的方法
  4. Plasma链0x1的构造
  5. Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载
  6. 前端学习(2786):完成推荐商品结构之头部标签栏
  7. Google Go Programming In Eclipse
  8. 十四、List,Set,Collection,Collections
  9. DevOps交付模式下,软件测试的那些事
  10. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(一)
  11. 大学计算机实验vfp,Visual FoxPro程序设计上机实验(第2版)
  12. stc c语言子程序库,STC15 系列宏晶单片机的样例程序 - 下载 - 搜珍网
  13. 无线路由器关掉dhcp服务器,无线路由器关闭dhcp会好不好
  14. PCL读取ply文件
  15. 8.0.高等数学3-向量的乘法运算(数量积、向量积与混合积)
  16. [译] 为什么设计师讨厌政治(如何解决)
  17. 基因去重表达矩阵有重复的基因名 探针名字
  18. 百度网盘和官网下载并安装windows版本的Redis
  19. 敏捷效能提升的五大要素与误区
  20. 天振股份上市首日破发:市值蒸发约8亿元,方庆华夫妇为实控人

热门文章

  1. 机器人J中WPR_北方工业大学服务机器人研究项目介绍
  2. mplab x ide 中文使用手册_SCI必备利器:翻译又快又准,强推这款超牛X的神器!...
  3. externalreferences 命令在 sdi 模式下不可用_一个适合新手交互式Git命令学习项目
  4. hashmap为什么线程不安全_什么时候线程不安全?怎样做到线程安全?怎么扩展线程安全的类?...
  5. 【TensorFlow-windows】学习笔记八——简化网络书写
  6. Python函数之 ceil, floor,round
  7. nature,science上关于计算机视觉的一些原创文献
  8. Java生鲜电商平台-高并发核心技术订单与库存实战
  9. Linux系统编程——线程(1)
  10. Golang的值类型和引用类型的范围、存储区域、区别