React基础用法,脚手架创建项目。父子及兄弟通信,跨组件通信,定时器时钟案例

news2024/11/26 4:52:03

create React App 脚手架工具创建项目

1.下载插件

2.打开终端

npx create-react-app my-app //my-app是自己创建的项目名

创建完成后cd my-app,到该项目的盘符执行npm start,就可以运行起来了


组件通讯

父传子

在父亲组件中引用子组件

在render()中使用子组件

在子组件中直接使用This.props.xxx

props

1. 值是只读的,不能修改

2. 任意类型数据 数值、字符串、数组、对象、函数、JSX(vue插槽slot) ...

子传父

在父亲组件中引用子组件

在render()中使用子组件

在子组件中直接使用This.props.自定义属性,并将内容传到父组件中,用Str来接收,执行hello方法。


兄弟组件:

兄弟通信的精髓在于,子组件1传递给父亲组件,父亲组件再把值传递给子组件2


跨组件通信

实现方式:

1. 创建Context对象,导出Provider和Consumer对象(我写在utils里面,进行的引入)

2. 使用Provider包裹根组件提供数据,在APP中

3. 需要用到数据的组件使用Consumer包裹获取数据


React生命周期:

https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

案例:

import React, { Component } from 'react'

export default class Clock extends Component {
    constructor(props){
        super()
        this.state={
            date: new Date(),
            message:'生命周期'
        }
    }
    render() {
        return (
         <React.Fragment>
            <h1>{this.state.message}</h1>
            <h2>时钟组件,动态更新时间</h2>
            <h3>当前时间 {this.state.date.toLocaleTimeString()}</h3>
         </React.Fragment>
        )
      }
    componentDidMount(){
        this.timer()
        console.log('componentDidMount 组件挂载时>>>');
    }

    componentDidUpdate(){
        console.log('componentDidUpdate 组件更新时>>>');
    }
    
    componentWillUnmount(){
        console.log('componentWillUnmount 组件卸载时');
        clearInterval(this.timerID)
    }

    timer(){
        this.timerID=setInterval(()=>{
            this.setState({
                date:new Date()
            })
        },1000)
    }

}

APP.js


// import React, { Component } from 'react'
// import Clock from './components/定时器/Clock'

// export default class App extends Component {

//   constructor(props){
//     super()
//     this.state={
//        flag:true
//   }
//   }

//   render() {
//     return (
//       <div>
//         {this.state.flag?<Clock/>:null}
//         <button onClick={this.bindUnMount}>关闭组件</button>
//       </div>
//     )
//   }
//   bindUnMount=()=>{
//     let flag=this.state.flag
//     this.setState({
//       flag:!flag
//     })
//   }
// }

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

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

相关文章

基于商品理解的成交能力和成交满意度优化在Lazada的实践

作者&#xff1a;马蕊 Lazada推荐算法团队 在Lazada各域推荐场景中&#xff0c;既有优质商品优质卖家不断涌现带来的机会&#xff0c;也有商品质量参差带来的问题。如何才能为用户提供更好的体验&#xff0c;对卖家变化行为进行正向激励呢&#xff1f;下面本文将为大家分享我们…

在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!

世界各的男孩们成为 K-Pop 男团的旅程。 Mnet 的全球项目 BOYS PLANET 终于在 2 月 2 日首次亮相&#xff01; The Sandbox 与 CJ ENM 合作&#xff0c;于 2 月 6 日晚上 10 点开始举办两个基于 BOYS PLANET 生存节目的虚拟体验&#xff1a;BOYS PLANET&#xff1a;BOYS LAND 和…

五年制转本学历很重要江苏专转本

五年制转本学历很重要&#xff01; 大专和本科是有区别的 越好的公司&#xff0c;越重要的职位&#xff0c;要求越高。 目前在中大型企业&#xff0c;除了销售、行政等岗位&#xff0c;其他普遍要求本科学历&#xff0c;有些可以放宽到大专。很多公司对于程序员等岗位的要求不仅…

java中方法的学习笔记

java中方法是完成特定的功能的&#xff0c;相对独立的程序段&#xff0c;与其他编程语言中的子程序&#xff0c;函数等概念相当。 方法一定义&#xff0c;就可以在不同的程序段中调用&#xff0c;因此方法可以增强程序的清晰度&#xff0c;提高编码的效率 方法的声明 [修饰符…

装备制造业数字化转型CRM系统解决方案(信息图)

一、制造企业面临的机遇与挑战 2021年12月28日&#xff0c;工业和信息化部等八部门联合对外发布《“十四五”智能制造发展规划》&#xff0c;明确提到“推进智能制造&#xff0c;要立足制造本质&#xff0c;紧扣智能特征&#xff0c;以工艺、装备为核心&#xff0c;以数据为基…

jsp(全部知识点)

&#x1f44c; 棒棒有言&#xff1a;也许我一直照着别人的方向飞&#xff0c;可是这次&#xff0c;我想要用我的方式飞翔一次&#xff01;人生&#xff0c;既要淡&#xff0c;又要有味。凡事不必太在意&#xff0c;一切随缘&#xff0c;缘深多聚聚&#xff0c;缘浅随它去。凡事…

窗口置顶工具v2.6.0(截图+贴图)

大家好&#xff0c;很高兴能再次更新版本&#xff0c;距上一年12月份到现在&#xff0c;有差不多两个月没有更新了&#xff0c;主要是年底&#xff0c;工作方面要冲刺&#xff0c;直到上周才有空继续开发置顶工具。 本来想再偷懒一段时间再开发&#xff0c;但最近在工作中经常…

用于高效高光谱图像分类的多尺度上下文感知集成深度 KELM(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 高光谱遥感&#xff0c;作为成像技术与细分光谱技术有机结合的成像光谱遥感&#xff0c;可以获取在可见光到短波红外甚至中红外…

重构之改善既有代码的设计(一)

1.1 何为重构&#xff0c;为何重构 第一个定义是名词形式&#xff1a; 重构&#xff08;名词&#xff09;&#xff1a;对软件内部结构的一种调整&#xff0c;目的是在不改变「软件可察行为」前提下&#xff0c;提高其可理解性&#xff0c;降低修改成本。 「重构」的另一个用…

Bigscreen Beyond头显解析:极致轻量化,显示部分仅127g

近年来&#xff0c;一体机占据了C端VR市场主要地位&#xff0c;其采用低成本、低门槛、无线化设计&#xff0c;对消费者足够友好。尽管如此&#xff0c;PC VR生态也在发展&#xff0c;相比于一体机&#xff0c;PC VR可提供视觉质量更高的VR体验&#xff0c;而且依托于SteamVR生…

LayUI表格渲染实现前后端交互

方法渲染 初始化 table 容器中配置好相应的参数&#xff0c;由 table 模块内部自动对其完成渲染&#xff0c;而无需你写初始的渲染方法。 首先满足&#xff1a; 带有 class"layui-table"的 标签&#xff1b;对标签设置属性lay-data"" 用于配置一些基础参…

索引-性能分析-explain

explain 执行计划 explain 执行计划各字段含义 1&#xff09;id 就是代表 sql 的执行顺序或者表的执行顺序&#xff1b;id相同从上往下执行&#xff0c;id不同&#xff0c;id值越大越先执行&#xff1b;&#xff08;注&#xff1a;有子查询时就会出现sql执行顺序&#xff09;…

【物联网】mqtt初体验

文章目录安装EMQXjava集成添加依赖mqtt配置参数发布组件订阅组件测试接口接口测试最近在了解物联网云平台方面的知识&#xff0c;解除了mqtt协议&#xff0c;只看书籍难免有些枯燥&#xff0c;所以直接试验一下&#xff0c;便于巩固理论知识。 broker服务器操作系统&#xff1a…

Illegal char <:> at index 4

一、现象Java11环境下项目启动时报错&#xff1a;java.nio.file.InvalidPathException: Illegal char <:> at index 4但项目能正常启动、运行。二、解决办法方法1方法2项目路径\.idea\workspace.xml中的PropertiesComponent节点下新增配置&#xff1a;<property name&…

NoSQL(非关系型数据库)与SQL(关系型数据库)的差别

目录 NoSQL(非关系型数据库)与SQL(关系型数据库)的差别 1.数据结构&#xff1a;结构化与非结构化 2.数据关联&#xff1a;关联性与非关联性 3.查询方式&#xff1a;SQL查询与非SQL查询 4.事务特性&#xff1a;ACID与BASE 分析ACID与BASE的含义&#xff1a; 5.存储方式&am…

16- 梯度提升分类树GBDT (梯度下降优化) (算法)

梯度提升算法 from sklearn.ensemble import GradientBoostingClassifier clf GradientBoostingClassifier(subsample0.8,learning_rate 0.005) clf.fit(X_train,y_train) 1、交叉熵 1.1、信息熵 构建好一颗树&#xff0c;数据变的有顺序了&#xff08;构建前&#xff0c…

jvm对象创建与内存解析

1.类加载检查虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。new指令对应到语言层面上讲…

【node.js】node.js的安装和配置

文章目录前言下载和安装Path环境变量测试推荐插件总结前言 Node.js是一个在服务器端可以解析和执行JavaScript代码的运行环境&#xff0c;也可以说是一个运行时平台&#xff0c;仍然使用JavaScript作为开发语言&#xff0c;但是提供了一些功能性的API。 下载和安装 Node.js的官…

linux篇【14】:网络https协议

目录 一.HTTPS介绍 1.HTTPS 定义 2.HTTP与HTTPS &#xff08;1&#xff09;端口不同&#xff0c;是两套服务 &#xff08;2&#xff09;HTTP效率更高&#xff0c;HTTPS更安全 3.加密&#xff0c;解密&#xff0c;密钥 概念 4.为什么要加密&#xff1f; 5.常见的加密方式…

裸辞5个月,面试了37家公司,终于找到理想工作了

上半年裁员&#xff0c;下半年裸辞&#xff0c;有不少人高呼裸辞后躺平真的好快乐&#xff01;但也有很多人&#xff0c;裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因&#xff0c;今年2月下旬我从一家互联网小厂裸辞&#xff0c;没想…