【学习笔记】- 零基础学React

news2024/12/23 6:33:49

React是用于构建用户界面的JavaScript库。想要深入学习 react ,就应该从 jsx 入手

react脚手架初始化项目

>> npm install -g create-react-app
>> create-react-app proname
>> npm run start

运行之后,出现以下画面,至此,脚手架创建react项目完成。

在这里插入图片描述

react基础

1、JSX

1、jsx本身就是一个表达式

2、JSX添加属性,字符串属性,直接用引号添加,动态属性,直接写变量

3、JSX添加子元素,只有一个父元素

4、使用但标签的时候必须正确关闭

<p>{Math.random()}</p>
{/* 1234 */}
<p>{`name: ${obj.name}`}</p>
<button onClick={handleClick}>点击触发事件</button>

2、全局css设置

在入口文件index.js中引入

import './styles/common.css'

common.css

.box{
  width: 100px;
  height: 100px;
  background-color: pink;
  color: #000;
}

在其他组件中可以直接使用,注意添加class的时候需要使用className,因为class是关键字。

<p className='box'>1234</p>

3、局部css设置

在组件中引入css,注意需要使用变量进行接收

import style from './styles/test.module.css';

test.module.css

.testBox{
  background-color: green;
  color: #fff;
}

在组件中使用,注意,需要使用刚才引入时接收的变量,进行类名的设置才能生效

 <div>
	 <p className={style.testBox}>1234</p>
 </div>

4、创建组件

  • 函数组件
function App(){
	return (<div>
		<p>内部元素</p>
	</div>)
}

export default App
  • 类组件
import React, {Component, Fragment} from 'react'

//继承“Component”
class About extends Component {
  // 实现render函数	
  render() {
    return (
     <Fragment>About组件中的内容</Fragment>
              <>About组件中的内容</>
    )
  }
}

export default About

函数组件

function Test() {
  return <div>
    我是函数组件
  </div>
}

export default Test

注意事项:

组件中不需要根元素的时候,可以使用<Fragment></Fragment>或者是<></>标签进行包裹,渲染出来的组件则是不添加任何根元素

  • 必须继承Compenent,实现render函数
  • 组件名称的首字母必须是大写的,在React中可以用于区分组件和普通的标记
  • Fragment,没有任何修饰作用,起到占位符的作用
  • 空标签也有同样的效果,占位符作用

5、组件传值

类组件

1、父组件传值
<Layout name={'拉钩教育'} age={100}/>

state = {
    name: '拉钩教育',
	age: 100
  }

<Layout {...this.state}/>

子组件接收

import React, { Component } from 'react'

class Layout extends Component {
  render() {
    return (
      <div>
        <p>{this.props.name}</p>
        <p>{this.props.age}</p>
      </div>
    )
  }
}

export default Layout
2、类组件设置默认的props
static defaultProps = {
    name: 'defaultName',
    age: 18
}
3、类组件设置props类型
import PropTypes from 'prop-types'

Test.propTypes = {
  a: PropTypes.string,
  b: PropTypes.string.isRequired
}
4、向子组件间传递JSX
<JSX>
	<div>我是父组件传递到子组件的值: {`${name}`}</div>
	<p>我是第二个值</p>
</JSX>

子组件

<div>
	<p>我是JSX子组件</p>
	{this.props.children}
</div>

函数组件

1、父组件传值
<Test name={'拉钩教育'} a={10} b={10}/>

子组件接收props

function Test(props) {
  console.log(props)
  return (<div>
    <p>{props.a || '--'}</p>
    <p>{props.b || '--'}</p>
    <p></p>
  </div>)
}

export default Test

函数组件设置默认props

Test.defaultProps = {
  a: 'default',
  b: 0
}
2、简便传值方式

如果觉得属性比较多不好维护,则可以先对属性进行定义,然后通过解构传值的方式进行传值

传值定义:

const obj = {
  name: '拉钩教育',
  age: 100
}

组件使用

<Test { ...obj }></Test>
3、向子组件传递JSX
 <Test a={1}>
 	<p>我是父组件传递到子组件的值</p>
 </Test>

子组件接收

function Test(props) {
  return (<div>
    {props.children}
  </div>)
}

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

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

相关文章

DHCP服务

~ 安装和配置 DHCP 服务&#xff0c;为办公区域网络提供地址上网&#xff1b; ~ 创建地址池 inside_pool,地址池范围 192.168.0.100 - 192.168.0.200&#xff1b; ~ 根据题目 要求正确的配置网关和DNS信息&#xff1b; ~ 修改AppSrv 的dhcp服务器默认备份时间为150秒&#x…

案例3:Java汽车保养维修系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

dll文件丢失怎么恢复,修复丢失dll的全部方法分享

dll文件丢失怎么恢复&#xff1f;其实DLL 或称为动态链接库文件&#xff0c;是 Windows 操作系统中的重要文件之一&#xff0c;它包含了被应用程序或操作系统内部使用的函数和程序代码。当应用软件或系统内置应用启动时&#xff0c;会自动加载对应的 DLL 文件以获得所需要的程序…

ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析

第一章、生态系统服务讲解 1.生态系统服务概念和基本理论 ​ 2.生态系统服务评估方法与模型讲解 ​ ​ 3.生态系统服务权衡与协同研究方法与意义 ​ 4.文献可视化分析 ​ ​ 第二章、平台基础 一、ArcGIS Pro介绍1. ArcGIS Pro简介2. ArcGIS Pro基础3. ArcGIS Pro数据预处理4…

FLink 里面的时间语义说明

本文说明一下flink的时间语义 处理时间&#xff08;processTIme&#xff09; 执行相关操作的机器系统时间。 如果flink的流式处理程序是基于processtime。那么代码中所有的操作都是将基于运算符的机器系统时钟时间。每小时的processTime window包括在系统时钟指示完整一个小时…

直线导轨水平仪零位调整方法

对于直线导轨的使用&#xff0c;相信很多人都知道&#xff0c;这主要是因为直线导轨的使用范围非常广泛&#xff0c;小到抽屉&#xff0c;大到机械设备&#xff0c;我们都能看到他的身影&#xff0c;接触得多自然就熟悉了。 事实上&#xff0c;大家对直线导轨的了解可能就仅限于…

BM41-输出二叉树的右视图

题目 请根据二叉树的前序遍历&#xff0c;中序遍历恢复二叉树&#xff0c;并打印出二叉树的右视图 数据范围&#xff1a; 0≤n≤10000 要求&#xff1a; 空间复杂度 O(n)&#xff0c;时间复杂度 O(n) 如输入[1,2,4,5,3],[4,2,5,1,3]时&#xff0c;通过前序遍历的结果[1,2,4,…

Redis——BigKey问题

目录 MoreKey案例 测试数据 如何向redis数据库中一次性的插入100W条数据 如何将 100W条数据一次性写入redis数据库中 遍历百万、千万级别数据能否使用keys *? 生产上如何限制keys *、flushdb、flushall等危险命令&#xff1f; 不使用keys *使用什么遍历&#xff1f; 使…

Spring学习小结_2

文章目录 篇112 Bean的生命周期Bean实例属性填充循环引用Aware接口Spring IoC 整体流程总结 13 Spring整合MyBatis剖析 篇1 Spring学习小结_1 https://blog.csdn.net/m0_58730471/article/details/130075657?spm1001.2014.3001.5501 12 Bean的生命周期 Spring Bean的生命周期…

当下火爆出圈的 ChatGPT ,你了解多少?

ChatGPT 是什么&#xff1f;ChatGPT 有什么特点&#xff1f;ChatGPT 可以做什么&#xff1f;ChatGPT 初体验 当下 AI 聊天程序 ChatGPT 可谓如火如荼&#xff0c;因它给出的答案通常更为合理且更有人情味&#xff0c;全网讨论度非常高。 ChatGPT 是什么&#xff1f; ChatGPT 是…

仪表板展示 | X-lab开放实验室GitHub开源项目洞察大屏

背景介绍 X-lab开放实验室是一个开源软件产业开放式创新的共同体&#xff0c;由来自国内外著名高校、创业公司、部分互联网与IT企业的专家学者与工程师所构成&#xff0c;目前已在包括开源治理标准制定、开源社区行为度量与分析、开源社区流程自动化、开源全域数据治理与洞察等…

CSS - 实现容器溢出后隐藏滚动条并且能正常滚动,盒子高度超出后不显示滚动条但是能正常滚动(附带详细示例,完美解决方案)

前言 网上很多都会使用 JS 来实现&#xff0c;其实纯 CSS 就能完成。 本文实现了 当外层容器盒子溢出时&#xff0c;去掉滚动条的显示&#xff08;但能正常滚动&#xff09;&#xff0c;适用于 Vue、React 等全部前端项目&#xff0c; 您可以直接复制示例源码&#xff0c;运行…

Android性能优化—ViewPagers + Fragment缓存优化

大家看标题&#xff0c;可能会有点儿懵&#xff0c;什么是ViewPagers&#xff0c;因为在很久之前&#xff0c;我们使用的都是ViewPager&#xff0c;但是现在更多的是在用ViewPager2&#xff0c;因此用ViewPagers&#xff08;ViewPager、ViewPager2&#xff09;来代替两者&#…

第10届蓝桥杯省赛真题剖析-2019年3月24日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第126讲。 第10届蓝桥杯省赛&#xff0c;这是2019年3月24日举办的省赛Scratch考试真题&#xff0c;比赛是在线下举办的…

分组双轴图:揭示数据中的关联性和趋势变化

简介 分组双轴图是一种数据可视化图表&#xff0c;指有多个&#xff08;≥2&#xff09;Y轴的数据图表&#xff0c;多为分组柱状图折线图的结合&#xff0c;图表显示更为直观&#xff0c;可以很好地展示不同指标之间的关系&#xff0c;帮助用户更好地理解数据&#xff0c;做出…

深度学习 - 44.MMOE 与 Gate 之多目标学习

目录 一.引言 二.摘要 Abstract 三.介绍 Introduction 四.相关工作 RELATED WORK 1.DNN 中的多任务学习 2.SubNet 集成与 Expert 混合 3.多任务学习应用 五.建模方法 MODELING APPROACHES 1.Shared-bottom Multi-task Model 2.Mixture-of-Experts 3.Multi-gate Mixt…

美团B端“加速度”

配图来自Canva可画 一提起本地生活服务&#xff0c;相信绝大多数人并不会感到陌生&#xff0c;人们经常使用的餐饮外卖&#xff0c;便是本地生活服务的重要组成部分之一。而在消费者线上消费习惯逐渐养成、本地生活服务需求日渐增长等多方因素的共同影响下&#xff0c;本地生活…

BUUCTF pwn——picoctf_2018_rop chain

checksec && 运行 ida main函数调用vuln函数 名为vuln的函数存在溢出 名为flag的函数&#xff0c;通过校验可直接getflag 具体校验过程看图&#xff0c;只有win1和win2均为真&#xff0c;并且a1的值等于0xDEADBAAD才能getflag 变量win2的真假性通过win_function2函…

三个练手的软件测试实战项目(附全套视频跟源码)偷偷卷死他们

项目一&#xff1a;12306抢票项目 项目测试目的 学会Selenium定位web元素的方法 熟练浏览器调试工具使用 项目主体步骤 1&#xff09; 人工走一遍流程&#xff0c;对自动化的流程心中有数 2&#xff09; 按步骤拆分&#xff0c;然后对每一个小步骤编写自动化脚本 3&#xff…

FreeRTOS(三)——应用开发(一)

文章目录 0x01 FreeRTOS文件夹FreeRTOSConfig.h文件内容上面定义的宏决定FreeRTOS.h文件中的定义0x02 创建任务创建静态任务过程configSUPPORT_STATIC_ALLOCATION创建动态任务过程configSUPPORT_DYNAMIC_ALLOCATION 0x03 FreeRTOS启动流程启动流程概述 0x04 任务管理任务调度器…