react 初学(1)

1.安装环境

需要Node.js   自行下载安装

然后全局安装create-react-app

npm install -g create-react-app

如果出现报错请参考

create-react-app -V 报错无法将“create-react-app”项识别为 cmdlet、函数、脚本文件或可运行程序的名称_Java-请多指教的博客-CSDN博客

 2.创建一个项目

  在你的项目文件夹下打开Windows PowerShell  执行命令

  create-react-app your-app

安装过程会有点久,耐心等待即可

出现下面的界面,表示创建项目成功:

 然后进入你创建的项目目录下  我们执行npm start

也可以在vscode里面的终端打开

3.编写第一个react应用程序

react开发需要引入多个依赖文件:react.js、react-dom.js,分别又有开发版本和生产版本,create-
react-app里已经帮我们把这些东西都安装好了。把通过CRA创建的工程目录下的src目录清空

 清空后页面就是空白的了

然后我们可以看public目录下index.html    body里面就只有个div   id=root

后面我们需要使用js往这个div里面加东西

然后在里面重新创建一个index.js. 写入以下代码: 

//从react的包当中引入了React。
//只要你要写 React.js 组件就必须引入React, 因为react里有一种语法叫JSX,要写JSX,就必须引入React
import React from 'react';
//ReactDOM 可以帮助我们把 React 组件渲染到页面上去,没有其它的作用.它是从 react-dom 中引入的,而不是从 react 引入。
import ReactDom from 'react-dom';// ReactDOM里有一个render方法,功能就是把组件渲染并且构造 DOM 树,然后插入到页面上某个特定的元素上
ReactDom.render("欢迎来到react世界",document.getElementById("root"));

 document.getElementById("root")  获取index.html中的id=root    然后渲染

也可以修改为:

ReactDom.render(<div>欢迎来到react世界</div>,document.getElementById("root"));

自动识别html标签  这就是JSX语法

4.JSX语法与组件

4.1 语法

JSX 将 HTML 语法直接加入到 JavaScript 代码中,再通过翻译器转换到纯 JavaScript 后由浏览器执行。在实际开发中,JSX 在产品打包阶段都已经编译成纯 JavaScript,不会带来任何副作用,反而会让代码更加直观并易于维护。 编译过程由Babel 的 JSX 编译器实现。


原理是什么呢?
要明白JSX的原理,需要先明白如何用 JavaScript 对象来表现一个 DOM 元素的结构?
看下面的DOM结构

<div class='app' id='appRoot'>
<h1 class='title'>欢迎进入React的世界</h1>
<p>
React.js 是一个帮助你构建页面 UI 的库
</p>
</div>

上面这个 HTML 所有的信息我们都可以用 JavaScript 对象来表示:

{
tag: 'div',
attrs: { className: 'app', id: 'appRoot'},
children: [
{
tag: 'h1',
attrs: { className: 'title' },
children: ['欢迎进入React的世界']
},
{
tag: 'p',
attrs: null,
children: ['React.js 是一个构建页面 UI 的库']}]
}

但是用 JavaScript 写起来太长了,结构看起来又不清晰,用 HTML 的方式写起来就方便很多了。
于是 React.js 就把 JavaScript 的语法扩展了一下,让 JavaScript 语言能够支持这种直接在 JavaScript 代码里面编写类似 HTML 标签结构的语法,这样写起来就方便很多了。编译的过程会把类似 HTML 的 JSX结构转换成 JavaScript 的对象结构。

4.2 Class组件

可以新建一个文件夹,专门存放组件

在classmodule.js中写入代码

import React, { Component } from "react";class ClassApp extends Component{ //只有继承了Component才算是组件   组件名称首字母必须大写//渲染效果是靠render()方法render(){//render()函数必须要有个返回值return <div>hello classApp Component</div>;}}//export把组件导出去
export default ClassApp;

1.首先导入React和Component

2.class类名必须首字母大写,继承Component才算是组件

3.render()方法是渲染效果,必须有返回值

4.必须把组件暴露出去  使用export default 组件名

然后在index.js中导入      <ClassApp/>或者<ClassApp><ClassApp/>都可,看你自己喜欢

import ClassApp from './base/01_classmodule';ReactDom.render(<ClassApp/>,document.getElementById("root"));//ReactDom.render(<ClassApp><ClassApp/>,document.getElementById("root"));

注意

1.return后面可以加小括号换行   代码多的时候可以对齐好看

 return (<div>hello classApp Component</div>)

2.return 里面只能有一个最大的标签,不能并排

比如这就会报错:

改为

4.3 函数式组件

function FunctionalApp(){return (<div>hello Functional Component</div>)
}export default FunctionalApp;

还可以这样写函数式组件

const FunctionalApp=()=>{return (<div>hello Functional Component</div>)
}export default FunctionalApp;

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

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

相关文章

HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

HTTP1.1 优点&#xff1a; 整体方面&#xff1a;简单、灵活和易于扩展、应用广泛和跨平台 性能方面&#xff1a;长连接、管道网络传输解决请求队头阻塞&#xff08;没有使用&#xff09; 缺点&#xff1a; 安全方面&#xff1a;无状态、明文窃听、伪装、篡改 性能方面&am…

【NLP】多头注意力概念(02)

接上文: 【NLP】多头注意力概念(01) 五、计算注意力 将 Q、K 和 V 拆分为它们的头部后,现在可以计算 Q 和 K 的缩放点积。上面的等式表明,第一步是执行张量乘法。但是,必须先转置 K。 展望未来,每个张量的seq_length形状将通过其各自的张量来识别,以确保清晰…

抽象工厂模式

在开发一款游戏时&#xff0c;我们需要开发按钮Button及展板Board等组件&#xff0c;我们有多种风格Ligth或Dark&#xff0c;不同风格下组件的颜色、形状也不相同。如果按照工厂方法模式&#xff0c;则设计如下&#xff1a; 图 工厂方法模式实现上述需求 以上方法存在两个问题…

自动化测试工具比传统测试工具的优势体现在哪里?

随着软件行业的快速发展和扩张&#xff0c;自动化测试工具在提高测试效率和质量方面起到了不可或缺的作用&#xff0c;那你知道自动化测试工具比传统测试工具的优势体现在哪里吗&#xff1f; 首先&#xff0c;自动化测试工具能够大大缩短测试周期。相比于传统手动测试&#xff…

学习系统编程No.31【多线程互斥与同步】

引言&#xff1a; 北京时间&#xff1a;2023/7/16/14:32&#xff0c;摆烂至今&#xff0c;在耍这方面&#xff0c;谁能比我行&#xff0c;哈哈哈&#xff0c;乐观&#xff01;欠了一堆课要补&#xff0c;等我们把线程相关知识学完&#xff0c;对于系统编程方面我们搞定的就差不…

go语言终端交叉编译的事项windows编译其它平台软件包

交叉编译的终极版本[以此为准]&#xff1a; windows编译窗口目前分为cmd窗口&#xff0c;powershell窗口&#xff0c;这两个里面运行的命令不一样。 1.cmd窗口编译&#xff1b; 在windows10之前的系统版本上使用cmd命令行可以使用命令 CMD命令行中 在CMD命令行中编译&#…

【Unity 实用插件篇】| ReferenceFinder 引用查找插件,提高引擎查找使用效率

前言 【Unity 实用插件篇】| ReferenceFinder 引用查找插件&#xff0c;提高引擎查找使用效率一、ReferenceFinder 介绍二、使用示例三、实现方案3.1 方案选择3.2 查找及缓存3.3 界面实现 总结 前言 ReferenceFinder 是一个比较小众的插件&#xff0c;主要用来查找资源引用和…

Premiere Pro 2023(23.5) Mac

Premiere Pro是一个业界领先的视频编辑软件&#xff0c;旨在帮助用户快速、高效地制作和编辑专业质量的视频内容。作为Creative Cloud套装中的一部分&#xff0c;Premiere Pro具有丰富的功能和工具&#xff0c;可应对各种视频编辑需求。 Premiere Pro的主要特点包括多个视频和音…

竹云IDaaS | 全面融合AWS Cognito

AWS Cognito组件用户池User Pool国内暂未上线&#xff0c;身份云IDaaS可完全替代Cognito用户池&#xff0c;借助身份云进行用户身份验证并融合Coginto身份池Identity Pool&#xff0c;实现对AWS资源的无缝安全访问。 企业面临的挑战 AWS Cognito中国站暂未提供用户池User&…

OpenCV for Python 学习第五天:图片属性的获取

上一篇博文当中&#xff0c;我们学习了如何获取图片的通道&#xff0c;我们了解了通道的分离方法split()和通道的组合方法merge()。那么我们今天就来对图片的属性做一个深入的了解。 文章目录 图片属性OpenCV中属性介绍图片属性的获取 图片属性 图片属性是指描述和定义一张图片…

数字IC后端设计实现中的Post-mask ECO应该怎么做?

在数字IC后端设计实现中&#xff0c;我们经常会涉及到芯片需要做Function ECO。常见的Function ECO可以分为pre mask ECO和post mask ECO两种。因此&#xff0c;作为一个数字IC后端工程师&#xff0c;必须熟练掌握这两种Function ECO的实现流程及其实现技巧。 两者的区别在于&…

SQL-每日一题【585.2016年的投资】

题目 Insurance 表&#xff1a; 请你编写一个 SQL 查询&#xff0c;报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和&#xff1a; 他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。他所在的城市必须与其他投保人都不同&#…