当前位置: 首页 > news >正文

React-组件通信

组件通信

概念:组件通信就是组件之间的数据传递,根据组件嵌套关系的不同,有不同的通信方法

父传子

基础实现

实现步骤:

1.父组件传递数据-在子组件标签上绑定属性

2.子组件接收数据-子组件通过props参数接收数据

props说明

1.props可传递任意的数据

数字、字符串、布尔值、数组、对象、函数、JSX

2.props是只读对象

子组件只能读取props中的数据,不能直接进行修改,父组件的数据只能由父组件修改

特殊的prop children

场景:当我们把内容嵌套在子组件标签中时,父组件会自动在名为children的prop属性中接收该内容

子传父

核心思路:在子组件中调用父组件中的函数并传递参数

使用状态提升实现兄弟组件通信

实现思路:借助“状态提升”机制,通过父组件进行兄弟组件之间的数据传递

1.A组件先通过子传父的方式把数据传给父组件App

2.App拿到数据后通过父传子的方式再传递给B组件

//项目的根组件
//App -> index.js -> public/index.html(root)
import {useState} from 'react'function A({onGetAName}){//Son组件中的数据const name='this is A name'return(<div>this is A compnent,<button onClick={()=>onGetAName(name)}>send</button></div>)
}function B({name}){return(<div>this is B compnent,{name}</div>)
}function App() {const [name,setName]=useState('')const getAName=(name)=>{setName(name)}return (<div>this is App<A onGetAName={getAName}/><B name={name}/></div>);
}export default App;

使用Context机制跨层级组件通信

实现步骤:

1.使用createContext方法创建一个上下文对象Ctx

2.在顶层组件(App)中通过Ctx.Provider组件提供数据

3.在底层组件(B)中通过useContext钩子函数获取消费数据

//App->A->Bimport { createContext, useContext } from "react";//1.createContext方法创建一个上下文对象const MsgContext=createContext()//2.在顶层组件,通过Provider组件提供数据
//3.在底层组件,通过useContext钩子函数使用数据
function A(){return(<div>this is A compnent<B /></div>)
}function B(){const msg=useContext(MsgContext)return(<div>this is B compnent,{msg}</div>)
}function App() {const msg='this is app msg'return (<div><MsgContext.Provider value={msg}>this is App<A /></MsgContext.Provider></div>);
}export default App;

只要形成一个顶层和底层的嵌套关系,就可以使用这套机制

http://www.lryc.cn/news/364854.html

相关文章:

  • 低代码选型要注意什么问题?
  • hive切换spark引擎倒入数据乱码
  • fpga入门 串口定时1秒发送1字节
  • 总结一下自己,最近三年,我做了哪些工作
  • SpringCloud Gateway基础入门与使用实践总结
  • TensorBoard在pytorch训练过程中如何使用,及数据读取问题解决方法
  • 【Vue】普通组件的注册使用-全局注册
  • 爬虫之反爬思路与解决手段
  • 2.1.4 采用配置类与注解方式使用MyBatis
  • 微信小程序云开发实现利用云函数将数据库表的数据导出到excel中
  • python 字符串(str)、列表(list)、元组(tuple)、字典(dict)
  • 【源码】SpringBoot事务注册原理
  • 技巧:合并ZIP分卷压缩包
  • 数据挖掘 | 实验三 决策树分类算法
  • Python机器学习预测区间估计工具库之mapie使用详解
  • Linux基础指令磁盘管理002
  • Python怎么添加库:深入解析与操作指南
  • Python | 虚拟环境的增删改查
  • 【MySQL数据库】:MySQL内外连接
  • C# FTP/SFTP 详解及连接 FTP/SFTP 方式示例汇总
  • 二、【源码】实现映射器的注册和使用
  • Android Compose 十:常用组件列表 监听
  • Wireshark 如何查找包含特定数据的数据帧
  • 【深度学习入门篇一】阿里云服务器(不需要配环境直接上手跟学代码)
  • app,waf笔记
  • 数据仓库之维度建模
  • 解决远程服务器连接报错
  • 通过电脑查看Wi-Fi密码的方法,提供三种方式
  • Nvidia 目前的市值为 3.01 万亿美元,超过苹果Apple
  • 用langchain搭配最新模型ollama打造属于自己的gpt