React组件间的Context传值

react 使用context方式向后代组件进行传值(react组件传值——context) 今天介绍一种在react种进行组件传值的方式——context 需求 有三个组件ABC,A为B父,B为C父。A中有一个数据username,要将它传给C组件。 完整代码与效果 首先看如下完整代码,我们再逐渐分析 import React, { Component } from 'react' const MyContext = React.createContext() const {Provider} = MyContext export default class A extends C 阅读详情

在一个典型的 React 应用中,数据是通过 props 属性自上而下(由父及子)进行传递的,代码如下

ThemeBtn 中想要获取到ContextSimple 中的 text 属性,需要将 text 属性从 ContextSimple 传递到
ToolBar,再传递到 ThemeBtn,可以想象假如有10层,那将极其繁琐!

Context提供了一种在组件之间共享值的方式,而不必显式地通过组件树的逐层传递 props。

import React, { Component } from 'react';

function ThemeBtn(props) {
  return (
    <div>{props.theme.text}</div>
  )
}

function ToolBar(props) {
  return <ThemeBtn {...props}></ThemeBtn>
}

class ContextSimple extends Component {
  constructor(props) {
    super(props);
    this.state = {
      text:'按钮'
    };
  }
  render() {
    return (
      <ToolBar theme={this.state}></ToolBar>
    );
  }
}

export default ContextSimple;

如何使用 Context

创建一个Context对象

const ThemeContext = React.createContext();

Provider(订阅者):Provider 接收一个 value 属性,传递给消费者组件。
注意:这个value名字是固定的,不能改变,否则后面的消费者组件中获取不到属性值

<ThemeContext.Provider value={this.state}>

Consumer(消费者):这里,React 组件也可以订阅到 context 变更

<ThemeContext.Consumer>
   {
     value => <div>{value.name}</div>
   }
</ThemeContext.Consumer>

Context 完整使用代码:

import React, { Component } from 'react';

// 创建一个Context对象
const ThemeContext = React.createContext();
function ThemeBtn(props) {
  return (
    <ThemeContext.Consumer>
      {
        value => <div>{value.name}</div>
      }
    </ThemeContext.Consumer>
  )
}

function ToolBar(props) {
  return <ThemeBtn></ThemeBtn>
}

class ContextSimple extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: '按钮'
    };
  }
  render() {
    return (
      <ThemeContext.Provider value={this.state}>
        <ToolBar></ToolBar>
      </ThemeContext.Provider>
    );
  }
}

export default ContextSimple;
React组件间通信(常用方式,简单易用) React知识中一个主要内容便是组件之间的通信,以下列举几种常用的组件通信方式,结合实例,通俗易懂,建议收藏。 一、父子组件通信 原理:父组件通过props(与vue中的props区分开)向子组件通信,子组件通过回调事件与父组件通信。 首先,先创建一个父组件Parent.js跟子组件Children.js,二者的关系为直接父子关系。 Parent.js父组件如下,给父组件一个默认状态state,引入子组件,通过在子组件加上toChildren={this.state.msg},该处即为向子组件传.. 阅读详情

相关推荐

React组件传值

父组件向子组件传值 通过父组件的props属性向子组件传值 子组件:Children.js import React, { Component } from 'react'; export default class Children extends Component { constructor(props) { super(props) this.s...

读心悦 479

React之使用context传递数据

react中当要从父组件给子孙组件传递数据时 如果用props传递 则需要一级一级传递 而如果用context时 则可以在父组件中加入getChildContext函数 并声明需要传递的数据 在需要接受到数据的组件中声明变量类型Test.contextTypes = {test : PropTypes.string}  Example: //父组件 import React, { Compo...

潜行IT的博客 1250

前端实现微信扫一扫的思路

本篇文章的关键点就是讲解了我在实现处理多张二维码的场景时的思路,利用canvas遮挡识别过的二维码这个思路是pbk-bin大佬最先想到的,在实现这个需求以后还是很感叹这个思路的巧妙。👏pbk-bin🎁~如果文章对你有帮助,不妨赠人玫瑰,手有余香,预计将会在下篇更新较为完整的微信扫一扫界面和功能。

fang_my的博客 2488

React: 使用Context跨组件传递数据

import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; // 创建context得到两个组件 const {Provider, Consumer} = React.createContext() //最外层父组件 class Parent extends React.Component { render() { return ( // pink..

前端之行,任重道远! 569

2025ICPC南昌邀请赛题解

2025ICPC南昌邀请赛由XDU和WHU联合出题的ICPC南昌邀请赛,榜单显示8题金、6题银、5题铜。

weixin_50089904的博客 1958

论文阅读:SuperGaussians: Enhancing Gaussian Splatting Using Primitives with Spatially Varying Colors

Gaussian Splattings 在基于高斯显式表示的多视图重建中展示出了令人印象深刻的结果。然而,当前的高斯基元只有单视图依赖的颜色和不透明度来表示场景的外观和几何形状,导致了一种非紧凑的表示。在本文中,我们引入了一种名为“超高斯(SuperGaussians)”的新方法,它在单个高斯基元中利用空间变化的颜色和不透明度来提高其表示能力。我们实现了双线性插值、移动核,甚至是小型神经网络作为空间变化函数。

m0_48319749的博客 1508

React的组件中的传值,及context上下文的使用

传值方式,及 React Context上下文的使用

weixin_50559423的博客 818

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 78

【React】Context机制跨层传递数据详解

为了解决这个问题,React引入了Context机制,提供了一种更为简洁和高效的跨层传递数据的方式。React Context是React 16.3版本引入的一个API,旨在解决组件间需要共享某些状态却不想通过逐层传递props的困境。接下来,在应用的顶层组件或某个需要提供数据的高层组件中使用Provider,并传递需要共享的数据。Context不仅可以用于静态数据的共享,还可以与状态管理结合,实现动态数据的共享和更新。在任意深度的子组件中,我们可以使用Consumer来获取由Provider提供的数据。

lph159的博客 918

毕设别再硬肝了:我用 GPT + Codex 做项目、写论文,效率直接起飞

这个也是神器。你项目做完之后,最怕的是老师一问就懵。这时候你直接把你的项目发给它,让它模拟老师提问。这是我的毕业设计题目和项目简介,请你站在答辩老师角度,提出20个高频问题,并给出简洁好背的回答。要求:问题尽量贴近计算机专业本科毕业答辩。为什么选这个题目?技术选型为什么这样定?你的创新点是什么?系统难点是什么?数据库怎么设计的?你的模型为什么选这个?如果继续优化,下一步怎么做?这个对答辩真的帮助很大。说实话,如果没有 GPT + Codex,

m0_74100417的博客 1846

让 ABAP 程序天生可翻译:Text Symbols 与 Text Pool 从入门到工程化落地

ABAP 国际化实践:Text Symbols 的工程价值与落地方法 摘要: 本文系统阐述了 ABAP 开发中 Text Symbols 的核心价值与实践方法。通过解耦程序逻辑与语言文本,Text Symbols 实现了代码国际化,避免了硬编码带来的维护难题。文章详细介绍了 Text Pool 结构、两种引用方式(独立引用 TEXT-001 和附着式 '(001)'),以及 SE38 和 SE63 的翻译流程。特别强调最大长度预留、术语统一等工程实践,并提供了 READ TEXTPOOL 自动化检查方案。最

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 238

react18【系列实用教程】useContext —— Context 机制实现越层组件传值 (2024最新版)

Context 机制是 react 实现外层组件向内层组件传值的一种方案,父组件可以向其内部的任一组件传值,无论是子组件还是孙组件或更深层次的组件。

朝阳39的博客 1203

EtherCAT总线运动控制学习笔记(RXXW_Dor)

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

RXXW_Dor的博客 5429

React 组件之间参数传递,正传props,逆传,同级传值,跨组件传值context

以下主要是react四种组件传值方式 1、正传props: 1.1、rcc快速创建组件 1.2、在调用组件的地方传值 1.3、在组件中接收数据 2、逆传: 2.1、在父组件中先声明一个函数,该函数有一个形参来接收子组件逆向传递过来的数据, 2.2、在父组件中将这个函数的调用方式传递给子组件 2.3、在子组件中通过单击事件来触发,bind中第一个参数修改this指向,第二个参数为要传递的数据 2.4逆传案例二:(实现的是在子组件中删除组件的数据) 2.4.1在子组件使用this.props.xxx来接

果冻 2295

2025年最新自动化/控制保研夏令营&预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)

笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题。

Control Everything 2583

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

react之传递数据的几种方式props传值、路由传值、状态提升、redux、context

react之传递数据的几种方式 1、父子传值 父传值:<子的标签 value={'aaa'} index={'bbb'}></子的标签> 子接值:<li key={this.props.index}>{this.props.value}</li> 不止可以传值也可以传递方法: 父:方法={this.方法} 子:{thi...

denggen20020210的博客 1033

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

组件祖孙传值_react组件间的传值

在react中组件件的传值,可以是父子之间的传值,也可以是非父子之间(兄弟之间)的传值。父子间的传值:(1)、父传子:子组件如果是类组件,通过this.props获取父组件传递过来的值;子组件如果是无状态组件,则通过props获取父组件传递过来的值。(2)、子传父:主要是调用父组件传过来的方法,把实参传递到父组件方法中的实参中。兄弟间的传值:主要用pubsub-js插件完成1、父子组件之间的传值(...

weixin_34450111的博客 1085

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

学习笔记——react组件间传值

在react中,组件间传值是一个非常重要的功能。react中组件拆分要合理,精细。所以组件拆分时,会把一个页面级组件分为容器组件和展示组件。 容器组件:只负责当前页面组件所需要的的所有数据以及业务逻辑。 展示组件:负责接收容器组件中的数据,并展示出来。 展示组件中有可以划分更详细的组件。 1.容器组件向展示组件传值: 在容器组件中,准备好要传的数据(函数+数据)。 render() { return ( // 容器组件 <UIList li.

qq_41339126的博客 190

react组件传值方式总结

根据项目规模和组件关系复杂度,选择最适合的传值方式,保持代码可维护性和可扩展性。备注:redux和zustand的使用对比见下一篇文章。

qq_44693497的博客 1397

React 如何实现组件传值

React 如何实现组件传值正向传值--使用 props(父发送数据,子接收数据)逆向传值---函数传值跨组件传值---context 正向传值–使用 props(父发送数据,子接收数据) 逆向传值—函数传值 子组件通过事件调用函数传递 在子组件中使用 this.props.调用的函数名绑定发送数据 在父组件中进行函数传递 同级传值—pubsub-js 在第一个要传值的组件中进行数据抛出 PubSub.publish(" 事件名","数据") 在第二个要接收数据的组件中接收 PubSub.subscrib

yzkdcsdn的博客 604

React note8(脚手架:组件传值&跨组件传值context上下文对象&条件/循环渲染&ref)

组件传值 (一)正向传值—使用props 正向传值,父组件向子组件传值,通过props来传递。 但是注意:props的值是不能修改的,如果想修改的话,配合state使用,通过state来修改值。 props正向传值小栗子: 父组件在传值的时候有两种方式: (1)直接在调用的子组件里面传值—直接传值; (2)通过ES6扩展运算符给子组件传值—ES6扩展运算符传值。 子组件在接收父组件传过来的数据时也有两种方式: (1)直接this.props.xxx ; (2)解构赋值 let {demo1,demo2,

weixin_43297321的博客 383

React组件传值方式总结

1. 子组件向父组件传值 父组件Header: import Nav from 'Nav.js'; class Header extends React.Component { constructor(props) { super(props); this.state = { } this.callbackForNav = this.callback...

aiguanyi0149的博客 250

react父子传值与非父子传值

React.createContext()创建,通过Context包裹起来,里面再进行设置与传值,与状态提升不同的是,它适用于更深的组件嵌套关系,状态提升对于很深的组件嵌套的话就明显不合适了。通过编写一个对象,对象里边包含订阅和发布方法,订阅方法里边传入回调方法,再存入list中,发布方法里边执行存在list里边的方法。你可以通过前面的方法和插槽进行组合,完成复杂的传值。插槽会使组件又回到高耦合的形式,一般要尽量少用。

qq_46149597的博客 595

React 组件之间传值

react传值

Asher_lm的博客 462

组件祖孙传值_详解react组件通讯方式(多种)

1、父组件向子组件传值父组件向子组件传值一般采用props属性传递父组件:import React from 'react'import Child from './Child'const dataList = [{ id: '001', value: '张三' },{ id: '002', value: '李四' }]const Parent = props => {return ()}e...

weixin_39533174的博客 910

react--组件间的传值

一、父组件向子组件传值 父组件通过属性进行传递,子组件通过props获取 //父组件中 <Child data={[1,2,3]} /> //子组件中 console.log(this.props.data); 二、子组件向父组件传值 通过回调进行传递数据 父组件通过props向子组件传入一个方法,子组件在通过调用该方法,将数据以参数的形式传给父组件,父组件可以在该方法中对传入的数据...

m0_46394390的博客 186
上一篇: 使React支持装饰器语法
下一篇: Vue中将px自动转化为rem
My_Java_Life
博客等级 码龄11年 39粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值