React组件及组件通讯

组件使用

  • index.js
import { createRoot } from 'react-dom/client';
import App from './App';
const root = createRoot(document.querySelector('#root'))
root.render(<App />)
  • App.js
import Header from './commponts/Header/index'
const App = () => {return <div><Header /><p>12</p></div>
}
export default App
  • Header.js
const Header = () => {return <h1>header</h1>
}
export default Header

组件状态state

  • react也是数据驱动视图的,使用状态useState()函数实现
import { useState } from "react"const App = () => {let [count, setCount] = useState(10)return <div>count:{count}<button onClick={() => setCount(count + 1)}>count+1</button></div>
}
export default App
  • 修改状态
    规则:不直接修改当前状态的值,应该创建新值,否则会报错货组件无法重新渲染
import { useState } from "react"const App = () => {const [count, setCount] = useState(10)const [list, setList] = useState(['apple'])const [user, setUser] = useState({ name: 'lisa' })return <div><h1>count:{count}</h1><button onClick={() => setCount(count + 1)}>count+1</button><hr></hr><h1> 数组:{list.join()}</h1><button onClick={() => setList([...list, 'orange'])}>新增</button><button onClick={() => setList(list.map(item => {if (item === 'apple') {return '苹果'}return item}))}>修改</button><button onClick={() => setList(list.filter(item => item !== 'apple'))}>删除</button><hr></hr><h1> 对象:{user.name}</h1><button onClick={() => setUser({ ...user, name: 'tom' })}>修改</button></div>
}
export default App

组件通讯

  • 父传子
// 方法一:子组件通过props接收
const Children = props => {// 注意:props是只读的return (<div><img src={props.imgURl} /></div>)
}// 方法二:子组件通过解构props接收,可以给参数设置默认值
const Children2 = ({ imgURl, size = 50 }) => {// 注意:props是只读的return (<div><img src={imgURl} size={size} /></div>)
}const App = () => {return (<div><Children imgURl='http:www.baidu.com.pic'></Children><Children2 imgURl='http:www.baidu.com.pic'></Children2></div>)
}
  • 子传父
    1、父组件准备修改状态的函数,并传递给子组件
    2、子组件调用函数,并回传数据
const Children = ({ id, name, handleParams }) => {return (<div id={id} onClick={handleParams(id)} >{name}</div>)
}const App = () => {const handleParams = (id) => {console.log(id);}const arr = [{ id: 1, name: 1 }, { id: 2, name: 2 }]{arr.map(item => {return (<div><Children key={item.id} id={item.id} name={item.name} handleParams={handleParams}></Children></div >)})}
}
  • 非父子组件----兄弟组件
    使用props,通过父组件来互相传递值

  • 非父子组件----后代组件,通过context(上下文)实现,步骤如下:

1、创建共享数据
const ThemeContext = createContext()
2、划定范围,提供共享数据
<ThemeContext.Provider value="要去共享的数据">父组件
</ThemeContext.Provider>
3、范围内的组件,获取共享数据
const 要去共享的数据 = useContext(ThemeContext)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一致性广播、可靠广播、原子广播、安全因果原子广播以及与拜占庭协议结合

在分布式系统中&#xff0c;广播协议是确保信息在网络中的节点之间有效传递的关键机制。一致性广播、可靠广播、原子广播和安全因果原子广播是分布式系统中用于确保消息传递和一致性的四种不同类型的广播协议。它们各自有不同的目标和特性&#xff0c;适用于不同的应用场景。本…

自定义微信红包封面小程序,附带后端源码,快速制作个性化红包封面

此小程序适合流量主引流&#xff0c;赚广告费&#xff0c;适合广流量主&#xff0c;适合流量主。 采用云开发&#xff0c;无需服务器&#xff0c;无需域名。小程序里插入banner广告&#xff0c;插屏广告&#xff0c;视频广告&#xff0c;激励式广告。邀请好友获取抽奖机会&…

医院陪诊管理系统(源码+文档)

TOC) 文件包含内容 1、搭建视频 2、流程图 3、开题报告 4、数据库 5、参考文献 6、服务器接口文件 7、接口文档 8、任务书 9、功能图 10、环境搭建软件 11、十六周指导记录 12、答辩ppt模板 13、技术详解 14、前端后台管理&#xff08;管理端程序&#xff09; 15、项目截图 1…

2024中国(杭州)国际数字物流技术与应用展览会将于7月8日举办

2024中国&#xff08;杭州&#xff09;国际数字物流技术与应用展览会 2024年7月8-10日 | 杭州国际博览中心 同期举办&#xff1a;2024长三角快递物流供应链与技术装备展览会 数字贸易创新引领合作动能 《十四五规划》明确指出关于“加快数字化发展&#xff0c;建设数字中国…

小程序能否替代APP?专业解析在此!

在科技行业&#xff0c;每一次创新都可能引起行业的颠覆性变革。近年来&#xff0c;随着小程序技术的迅猛发展&#xff0c;业界对于它是否将替代传统APP的讨论愈演愈烈。作为一位资深科技行业分析师&#xff0c;我将从多个维度探讨小程序与APP之间的差异&#xff0c;以及它们在…

[leetcode] 哈希表

文章目录 1.有效字母的异位词 E2. 两个数组的交集 E3.快乐数 E 1.有效字母的异位词 E :::details 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异…

Pytorch简明教程01

文章目录 01 Pytorch基础知识1.1 Tensor简介1.2 Tensor的创建1.3 张量的操作1. 运算操作2. 矩阵运算3. 维度变换4. 扩展和压缩维度 1.4 广播机制1.5 梯度计算 01 Pytorch基础知识 主要介绍pytorch中的tensor&#xff0c;包括tensor的创建、基本操作、广播机制等 1.1 Tensor简介…

Windows安装Mysql8

新建Mysql配置文件 my.ini [mysql] # 设置mysql客户端默认字符集 default-character-setutf8 [mysqld] #设置3306端口 port 3306 # 设置mysql的安装目录 basedirD:\\KaiNeng\\mysql-8.0.26-winx64 # 设置mysql数据库的数据的存放目录 datadirD:\\KaiNeng\\m…

爬虫工作量由小到大的思维转变---<第六十四章 > Scrapy利用Bloom过滤器增强爬虫的页面去重效率

前言&#xff1a; 网络爬虫系统是信息时代获取和管理网络数据的重要工具&#xff0c;广泛应用于搜索引擎索引、数据聚合、在线研究等领域。随着网络信息的海量增长&#xff0c;爬虫系统不可避免地会面临重复内容的爬取问题。这不仅浪费了计算资源和网络带宽&#xff0c;而且还会…

24计算机考研调剂 | 中国航天科工集团第三研究所第八三五八研究所

中国航天科工集团第三研究院第八三五八研究所 2024年航天科工集团三院8358所调剂基本要求 一、8358所坐落天津&#xff0c;为定向招生&#xff08;毕业后留所工作&#xff09;&#xff1b; 二、本年度拟调剂名额4-5人&#xff1b; 三、我所接收符合条件的调剂考生&#xff1a;…

代码第三十五天-子集Ⅱ

子集Ⅱ 题目要求 解题思路 回溯法 一般情况下&#xff0c;看到题目要求[所有可能的结果]&#xff0c;而不是[结果的个数]&#xff0c;我们就知道需要暴力搜索所有的可行解了&#xff0c;可以使用[回溯法] 回溯法是一种算法思想&#xff0c;而递归式一种编程方式&#xff0c;回…

Cesium实现渐变面

一、效果图 二、实现思路 使用着色器&#xff0c;通过纹理坐标和其他参数计算出材质的颜色和透明度。通过给定的颜色、漫反射强度和透明度&#xff0c;计算出最终的反射颜色和透明度&#xff0c;并且根据给定的中心点位置和当前像素的纹理坐标&#xff0c;计算出距离中心的距离…

C++未格式化的输入/输出操作,流随机访问

未格式化的输入/输出操作 到目前为止&#xff0c;我们的程序只使用过格式化IO操作。输入和输出运算符(<<和>>)根据读取或写入的数据类型来格式化它们。输入运算符忽略空白符&#xff0c;输出运算符应用补白、精度等规则。 标准库还提供了一组低层操作&#xff0c;…

(一)kafka实战——kafka源码编译启动

前言 本节内容是关于kafka消息中间键的源码编译&#xff0c;并通过idea工具实现kafka服务器的启动&#xff0c;使用的kafka源码版本是3.6.1&#xff0c;由于kafka源码是通过gradle编译的&#xff0c;以及服务器是通过scala语言实现&#xff0c;我们要预先安装好gradle编译工具…

[已解决]ModuleNotFoundError: No module named ‘triton‘

问题描述&#xff1a;ModuleNotFoundError: No module named triton window下难以编译&#xff0c;直接下载win版本已经编译的&#xff1a; https://huggingface.co/r4ziel/xformers_pre_built/blob/main/triton-2.0.0-cp310-cp310-win_amd64.wh

每日一练 找无重复字符的最长子串

我们来看下这个题目&#xff0c;我们要统计的是不重复的子串&#xff0c;我们可以使用“滑动窗口法”&#xff0c;其实我们很容易就能想到思路。 我们的左窗代表我们目前遍历的开始&#xff0c;即我们遍历的子串的开头&#xff0c;右窗从左窗开始进行遍历&#xff0c;每次遍历…

【C语言终章】预处理详解(上)

【C语言终章】预处理详解&#xff08;上&#xff09; 当你看到了这里时&#xff0c;首先要恭喜你&#xff01;因为这里就是C语言的最后一站了&#xff0c;你的编程大能旅途也将从此站开始&#xff0c;为坚持不懈的你鼓个掌吧&#xff01; &#x1f955;个人主页&#xff1a;开敲…

04-MySQL数据库-权限管理

一、查看权限 1&#xff0c;查看系统所有权限 mysql> show privileges; 权限字段介绍 privileges #权限名称 context #对象&#xff0c;表示可以对数据库&#xff0c;那些资源、进行哪些操作&#xff1b; comment #描述&#xff0c;备注解释说明&#xff1b; Grant…

Caddy之静态站点应用场景

一、背景与介绍 无意之中看到公司部门的软件介质下载站点不是使用Nginx部署&#xff0c;而是使用Caddy。就比较好奇了&#xff0c;这个Caddy是个什么东西? 为啥他们没用Nginx呢&#xff0c;带着好奇心搜索了一下相关资料。 官方解释: Caddy is a powerful, extensible platfo…

Redis 事务 与 管道

redis事务 谈到事务大家可能就会想起mysql中的事务 注意这里的事务不是指的是事务的四大特性acid 持久性 原子性 隔离性 一致性 事务的概念就是 一组命令,串行化执行而不被打断 这里redis的事务和mysql的事务就不太一样 传统关系型数据库的事务主要强调的是一个没有执行完成就…