【React】React 入门教程

小白快速上手React 看这篇就够了!!(基础篇) 本篇可以快速了解React的基础语法,便于遗忘时快速复习,里面的小案例通俗易懂,没有废话,只有简单、简单、还是简单! 阅读详情

一、jsx

1、 Script 类型一定要为 text/babel

<script type="text/babel"></script>

2、解析规则

  • 遇到 <> 开头的代码以标签的语法解析 html同名的转换成html元素 其他标签需要特别解析
  • jsx 页面里边想要解析 js 代码 必须要写在 {} 里边
  • 使用 ReactDOM.render 方法将 react 元素渲染在根节点里
    <body>
        <div id='root'></div> //必须有根节点
    </body>
    // react 核心库
    <script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
    
    // 提供操作dom的react扩展库
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
    
    // 解析jsx语法的库
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js" crossorigin></script>
    
    // type类型必须为 'text/babel'
    <script type='text/babel'>  
        const str = 'hello world'
        const vDom = <h1>{str}</h1>
         //下边为渲染jsx语法方法(一般来说页面只调用一次)
        ReactDOM.render(vDom,document.getElementById('root'))
    </script>

二、React 组件

1、react 有两种组件形式 

  • 函数组件
  • 类组件
    // 函数组件
    function Com1() { //必须为大写字母开头
        return <h1>hello world</h1>
    }
    ReactDOM.render(<Com1 />,document.getElementById('root1'))
    
    // 类组件 (需要继承react.component)
    class Com2 extends React.component { //必须以大写字母开头
        render() {
            return (  // 多行标签写在()里,return后不可直接换行
                <div>
                    <h1>hello cz1</h1>
                    <h1>hello cz2</h1>
                </div>
            )
        }
    }
    ReactDOM.render(<Com2 />,document.getElementById('root2'))
    //渲染组件 需要用尖括号<>将组件名称包裹起来并含有闭合标签

    注意事项

  • 注意组件的命名一定要是 大写字母 开头
  • 注意如果组件返回多个标签,那么多个标签需要被一个根标签包裹,一个组件有且只有一个根标签
  • 渲染组件在 ReactDOM.render 里需要用尖括号 <> 将组件名称(首字母大写)包裹起来并含有闭合标签
  • return 后边不能直接换行,否则会以没有渲染内容报错,如内容过多,可写在 () 里

2、类组件和函数组件的区别

        类组件

  • 可以访问this对象
  • 有可以更新渲染页面的数据状态-state
  • 可以访问输入的props
  • 可以访问生命周期的方法

        函数组件

  • 组件不会被实例化,渲染性能提高
  • 只能访问输入的props,没有state
  • 组件不能访问生命周期的方法
  • 组件不能访问this对象

3、state 用来更新渲染页面的数据状态 (类组件才拥有state)

  • 类组件才拥有state,所以只有类组件才能动态更新视图
  • 如果类组件需要定义自己的构造函数,一定要在构造函数的第一行通过super()调用父类,也就是React.Component的构造函数(构造函数可省略)
  • 如果在构造函数中没有调用super(),那么组件实例被构造之后,类实例的所有成员就无法通过this.props访问到父组件传递过来的props值
  • 在方法里要改变state的值需要调用 this.setState()方法
  • 在render中需要覆盖state的值不需要调用setState方法,可直接通过this.state直接赋值,注意,在render中给state赋值,将会覆盖state之前任何时刻的值(如果你需要的话,实际上没人会这么做,了解即可)
    class Com extends React.Component {
        constructor(props) { //构造函数  可省略,默认调用
            super(props) //只要是继承的类写构造函数必须要调用super()
            this.state={ //初始化state,在这里合并props
                name:props.name
            }
        }
        
        //相当于调用构造函数里的this.state,初始化state,可省略构造函数
        state={
            name:props.name
        }
        
        fun=()=>{
            this.setState({ // 在方法里要改变state的值需要调用setState()方法
                name:'更新的值'
            })
        }
        render(){
            return <h1>{this.state.name}</h1>
        }
    } 

4、props 父组件向子组件传值

 // 函数组件props传值
function Com1(props) {
    return <h1>{props.name}</h1>
}

//类组件props传值
class Com2 extends React.Component{
    render(){
        return <h1>{this.props.name}</h1>
    }
}

class App extends React.Component{
    render(){
        return (
            <div>
                <Com1 name='我是函数组件'/>
                <Com2 name='我是类组件' />
            </div>
        )
    }
}

ReactDOM.render(<App />,document.getElementById('root'))
//渲染组件 需要用尖括号<>将组件名称包裹起来并含有闭合标签

5、子组件向父组件传值

  • 在父组件中给子组件Com1传递一个名为appSubmit的方法,对应父组件中的submit方法
  • 在子组件Com1中由 comSubmit 方法触发通过props传递过来的appSubmit方法并传递参数
  • 在父组件 submit 方法中拿到子组件Com1传递的参数
    class Com1 extends React.Component{
        comSubmit=()=>{
            //调用父组件传递过来的方法并传递参数,对应父组件中的submit方法
            this.props.appSubmit('参数')
        }
        render(){
            return <button onClick={this.comSubmit}>向父组件传递参数</button>
        }
    }
    
    class App extends React.Component{
        // 当子组件Com1触发父组件传递的appSubmit方法后,就触发了该方法
        submit=(val)=>{
            console.log(val) // 拿到子组件传递过来的参数
        }
        render(){
            // 将父组件submit方法以appSubmit为名传递到子组件Com1中
            // 实际上子组件Com1中获取的appSubmit方法就是父组件的submit方法
            return <Com1 appSubmit={this.submit} />
        }
    }

 6、子组件向子组件传值

  • 先让子组件A向父组件传值
  • 再把父组件从子组件A中接收的参数通过props传递给子组件B

三、受控组件和非受控组件(收集表单数据) 

1、受state控制的为受控组件

  • 通过state来控制表单元素
  • 随着用户输入进行更新
    class Com extends React.Component{
        state={  // 相当于构造函数里的this.state
            name:''
        }
        getInput=(e)=>{
            let val = e.target.value
            this.setState({ // 更新state
                name:val
            })
        }
        render(){
            // 把表单的值和state的值绑定,再通过方法更新用户输入的值
            return <input value={this.state.name} onChange={this.getInput} />
        }
    }

 2、不受state控制的为非受控组件

  • 利用ref来获取元素dom,通过操作dom拿到数据
    class Com extends React.Component{
        getInput=()=>{
            let val = this.refs.userName.value
            console.log(val)
        }
        render(){
            return (
                <div>
                    <input ref='userName' />
                    <button onClick={this.getInput}>get</button>
                </div>
            )
        }
    }

四、生命周期(常用) 

1、挂载过程

  • componentWillMount()
    • 组件已经经历过constructor()初始化但是还未渲染dom
    • 用的比较少
  • componentDidMount()
    • 组件第一次渲染完成,此时dom节点已经生成
    • 这里可以调用ajax请求,setData后组件会重新渲染

2、更新过程

  • componentWillReceiveProps(nextProps)
    •  组件初始化的时候不会调用该生命周期
  • shouldComponentUpdate(nextProps,nextState)
    • nextProps 未更新之前的state的值
    • 可以在这一步来决定是否渲染页面
    • 必须return一个布尔值,return值的类型不对,或则不return都会报错
    • nextState 更新之后state的值

五、脚手架

  •  npm i -g create-react-app
  • create-react-app xxxx(文件名)
React基础入门 React系列二 - 核心JSX语法一 React系列二 - 核心JSX语法二 React系列三 - 阶段案例练习 阅读详情

相关推荐

RK3568 MIPI屏幕启动异常:从uboot logo到黑屏的排查与修复

本文详细分析了RK3568平台MIPI屏幕在启动过程中,从uboot阶段正常显示logo到内核阶段黑屏的典型故障。通过硬件测量与软件调试,最终定位问题根源在于电源时序,并提供了在设备树中为屏幕供电的regulator节点添加`regulator-boot-on`属性的关键解决方案,有效解决了因内核启动早期电源管理导致的显示异常。

weixin_29161719的博客 541

React 入门(超详细)

1. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。 2. React 是一个用于构建用户界面的JavaScript 库。React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。 3. React 是用于动态构建用户界面的

weixin_62897746的博客 4万+

【硬件】通俗易懂的讲解晶体管(三极管和MOS管)的工作原理

晶体管是一个简单的元器件,可用于构建许多有趣的项目。在本文中,我将用通俗易懂的语言给您讲解晶体管的工作原理,以便您可以在电路设计中更好的使用静态管。一旦你学习这些基础知识,对以后的设计和使用来说,将会变得非常容易。我们将重点介绍两种最常见的晶体管:双极型晶体管(三极管)和MOSFET。晶体管的工作原理其实是类似于电子开关。它可以打开和关闭电路。一个简单的思考方法是将晶体管视为无源的继电器。晶体管类似于继电器,从某种意义上说,您可以使用它来打开和关闭某些东西。但晶体管也可以部分导通,一般在放大电路中使用,这部

1万+

react快速开始(一)-入门基础

react快速开始-入门基础 在前端框架框架方面,其中的佼佼者React和AngularJS均出名门公司,具有非凡的影响力和号召力。尤其是React,它定位于前端组件化、高性能和跨平台,它提出的基于虚拟DOM的理念一出现就获得了广泛的关注和认可,也被AngularJS等其他前端框架所引入。

西京刀客 1万+

ElasticSearch读写性能调优

深层次理解,虽然是每隔一秒就会将内存中的segment数据刷新到segment file中,但实际上这里并没有直接到磁盘文件,而是先写入到OS Cache中。以refresh_interval为间隔时间,将保存在ES 内存缓存区中的数据 刷新到 os的文件系统缓存中,定期清空es的buffer,生成segment。注意:ES 的默认设置,已经综合考虑了数据可靠性,搜索的实时性,写入速度,一般不要盲目修改。将segment刷新到os cache中,并开放了查询权限,以提升搜索的实时性。

qq_44027353的博客 1811

NVIDIA DGX Spark实战指南:从开箱到AI模型高效部署

本文详细介绍了NVIDIA DGX Spark的开箱体验、硬件架构及AI模型高效部署实战指南。从1 PetaFLOP算力的迷你设备到Grace Blackwell超级芯片的深度解析,再到五分钟快速上手指南和大模型部署技巧,帮助开发者充分利用这款全球最小AI超级计算机的性能优势。

weixin_29239279的博客 1366

ReactJS 40分钟入门教程

ReactJS 40分钟入门教程 1. 项目的目录结构及介绍 reactjs-in-40/ ├── README.md ├── package.json ├── public/ │ ├── index.html │ └── ... ├── src/ │ ├── index.js │ ├── App.js │ ├── components/ │ │ ├── Compone...

gitblog_00375的博客 436

11、iOS设备逻辑数据分析全解析

本文深入解析iOS设备中的逻辑数据,涵盖图像相关数据库(Photos.sqlite和PhotosAux.sqlite)、录音文件、iPhoto照片存储结构、多媒体文件、第三方应用程序、社交网络应用(如Twitter、Skype、Facebook等)以及苹果相关应用(如Google Mobile、Bing)的数据存储结构和取证方法。此外,还介绍了文档类应用(如Pages、Numbers、Documents To Go)的文件存储结构及恢复方法。适用于iOS取证、数据挖掘和数字调查领域。

rain6的博客 226

從零開始學 ReactJS:最完整的 React 生態系入門教程

转自:https://github.com/kdchang/reactjs101 從零開始學 ReactJS(ReactJS 101)是一本希望讓初學者一看就懂的 ReactJS 中文入門教學書,由淺入深學習 ReactJS 生態系 (Flux, Redux, React Router, ImmutableJS, React Native, Relay/GraphQL etc.)。 https:

Android系统攻城狮 4823

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1420

ReactJs入门教程

一、对ReactJS的认识及ReactJS的优点ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。由于React的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所...

409

基于STM32L4XX、HAL库的YT8531C-CA以太网收发器(PHY)驱动程序设计

是一款由裕太微推出的高性价比、低功耗的单端口 10/100M 以太网物理层收发器(PHY)。它通过标准的 MII(介质独立接口)或 RMII(精简介质独立接口)与微控制器的 MAC 层连接,实现将数字信号与网络模拟信号之间的转换。支持自动协商(Auto-Negotiation),自动选择最高速率和双工模式。支持 HP Auto-MDIX(自动交叉直连),无需区分直通线或交叉线。低功耗设计,特别适合电池供电或对功耗敏感的 STM32L4 应用。支持 MII 和 RMII 接口,节省引脚(RMII模式)。

zhusl6688的博客 628

一看就懂的ReactJs入门教程

一、ReactJS简介   React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将

明天回火星 542

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

视频教程-Ant Design Pro实战入门教程-整合版-ReactJS

Ant Design Pro实战入门教程-整合版 《Grails实战教程》系...

weixin_34065726的博客 2875

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【亲测免费】 快速掌握React:React中文入门教程PDF下载推荐

快速掌握React:React中文入门教程PDF下载推荐 【下载地址】React中文入门教程PDF下载分享 本仓库提供了一份名为“React中文入门教程”的PDF文件下载。该教程旨在帮助初学者快速入门React框架,掌握其基本概念和使用方法 ...

gitblog_06633的博客 637

visio安装包

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

【免费下载】 React中文入门教程 PDF 下载

React中文入门教程 PDF 下载 【下载地址】React中文入门教程PDF下载分享 本仓库提供了一份名为“React中文入门教程”的PDF文件下载。该教程旨在帮助初学者快速入门React框架,掌握其基本概念和使用方法 项目地址...

gitblog_06641的博客 860

ReactJS框架入门教程

ReactJS是由Facebook开发并开源的一个用于构建用户界面的JavaScript库。它专注于组件化开发思想,使得构建大规模、高性能的Web应用变得更加简单。ReactJS不同于传统的MVC框架,它引入了虚拟DOM(Virtual DOM)的概念,通过高效的DOM更新算法实现了快速的页面渲染。

技术研究中心 374

reactjs中文入门教程

下载地址 本视频教程是ReactJS的一个基础的中文视频教程,主要讲解的是ReactJS的基础知识,本视频教程的主要内容有: 1、Rreact概述 2、JSX 语法及特点介绍 3、React组件生命周期详解 4、React 属性和状态详解 5、React 中事件的用法 6、React 组件的协同使用 7、React 表单详解 8、React 组件性能调优 9、测试 React ...

chunchun1230的博客 401

STM32CubeProgrammer安装与AI编程烧录全指南

STM32CubeProgrammer是嵌入式开发中连接AI生成代码与物理芯片的关键枢纽,其本质是集烧录、调试、安全配置于一体的系统级工具。它基于SWD/JTAG协议与STM32芯片底层存储(Flash/Option Bytes)交互,支撑HEX/BIN/ELF等固件格式的可靠写入与校验。在AI编程场景下,其命令行工具(STM32_Programmer_CLI)成为自动化构建、A/B测试和OTA升级流水线的核心执行节点。掌握驱动签名绕过、路径规范、CLI参数控制及Option Bytes安全边界设定,是打通

weixin_34115824的博客 398
上一篇: 【移动端】vue脚手架项目手机实时预览方法
下一篇: 【小程序】云开发模式使用 npm 安装 vant 问题
NAMECZ
博客等级 码龄9年 175粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值