React-项目构建

​🌈个人主页:前端青山
🔥系列专栏:React篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来React篇专栏内容:React-项目构建

目录

1、初始化项目

2、目录结构

组件

1、组件的创建方式

1.1、函数创建组件

1.2、类组件

2、组件传值(父-子)

2.1、函数组件

2.2、类组件

React团队推荐使用create-react-app(相当于vue的vue-cli)来创建React新的单页应用项目,它提供了一个零配置的现代构建设置。

React脚手架(create-react-app)意义:

  • 脚手架是官方提供,零配置,无需手动配置繁琐的工具即可使用

  • 充分利用Webpack,Babel,ESLint等工具辅助项目开发

  • 关注业务,而不是工具配置

create-react-app会配置我们的开发环境,以便使我们能够使用最新的 JavaScript特性,提供良好的开发体验,并为生产环境优化你的应用程序。为了能够顺利的使用create-react-app脚手架,我们需要在我们的机器上安装Node >= 14 和 npm >= 8。

npm i -g @vue/cli

vue create xxxx

1、初始化项目

在终端中使用以下命令来构建react项目:

# 免安装形式
npx create-react-app my-app
# 上面这种安装方式不需要全局安装create-react-app,如果需要全局安装,则可以执行下面的命令
# 项目名称:react、reactdom、reactscript等不允许使用
# npm i -g create-react-app
# create-react-app your-app

项目创建需要消耗的时间可能会有点久,在项目创建完毕后可以执行以下指令:

# 进入项目目录
cd my-app
# 启动项目
npm start

如果本机安装了yarn(一款Facebook自家的包管理工具,类似npm),则安装好给予的项目启动命令提示是yarn start

# yarn安装
npm i -g yarn
​
# 配置yarn源
npm i -g yrm
​
# yrm切换yarn源
yrm use taobao
​
# 生成react项目包
yarn create react-app 包名称

2、目录结构

  • public目录下

    • manifest.json:清单文件(说明性文件),谷歌要求有这个文件,但是这个文件对开发者来讲没什么用。

    • robots.txt:用于声明当前项目哪些路径、目录允许搜索引擎抓取。

  • src目录下

    • *.css:样式文件

    • ==App.js==:类似于App.vue,就是react里面的根组件(在react中,组件后缀是js,但是以后写react组件的时候后缀请使用jsx,为了便于区分组件与封装的js文件

    • App.test.js:测试文件

    • ==index.js==:类似于main.js,是项目执行的入口文件

    • reportWebVitals.js:谷歌新增的性能优化库文件

    • setupTests.js:针对项目index.js的一个单元测试文件

了解了react的目录结构后,可以对初始化的项目进行文件清理。此处将srcpublic目录中的内容全部删除即可,后期如果需要自己往里面写内容。

组件

组件

组件允许我们将UI拆分为独立可复用的代码片段,并对每个片段进行独立构思。从概念上类似于JavaScript函数,它接受任意的入参(props),并返回用于描述页面展示内容的React元素(JSX)。

在react中,组件的形式有2种:

  • 函数组件(拥抱函数式开发方式,面向过程)

    • 无状态(函数组件也被称之为无状态组件,相当于vue中的data)

    • 无生命周期

    • 有Hooks(辅助函数的集合,这些辅助函数可以帮助开发者在函数组件下快速开发)

  • 类组件(面向对象)

    • 有状态

    • 有生命周期

1、组件的创建方式

在react17之后,允许在项目不用“import React from "react";”,但是在之前的版本是不行的。建议写,肯定不会错。

1.1、函数创建组件

通过函数创建的组件有以下特点:

  • 函数组件(无状态组件):使用JS的函数创建组件

  • 函数名称以大写字母开头(建议)

  • 函数组件必须有返回值,表示该组件的结构(虚拟DOM),且内容必须有顶级元素

  • 函数组件是没有生命周期的

例如,新建组件文件src/App.jsx

约定:组件后缀可以是.js也可以是.jsx,为了方便区分组件与项目的业务代码,建议组件用.jsx,业务代码后缀用.js

import React from 'react'
// 函数名首字母必须大写
function App() {return (<div>这是第一个函数组件</div>)
}
​
export default App;

要想输出效果,可以再创建项目入口文件src/index.js

import React from "react";
import ReactDOM from "react-dom";
​
import App from "./App";
​
ReactDOM.render(<App></App>, document.getElementById("root"));

注意,由于之前清理了项目,当前项目中现在是没有挂载点的,所以需要在public/下创建一个html文件index.html,在其body中设置一个挂载位置:

<div id="root">
​
</div>

1.2、类组件

类组件有以下特点:

  • 使用ES6语法的class创建的组件(有状态组件)

  • 类名称为大写字母开头(建议)

  • 类组件要继承React.Component父类,从而可以使用父类中提供的方法或者属性

  • 类组件必须提供render方法,用于页面结构渲染,结构必须要有顶级元素,且必须return去返回

import React from "react";
// 创建class类,继承React.Component,在里面提供render方法,在return里面返回内容
class App extends React.Component {render() {return <div>这是第一个类组件</div>;}
}
​
export default App;

除了上述的写法以外,还可以对React.Component进行按需导入,写成以下形式:

// 引入react和Component
import React,{Component} from "react";
​
// 类组件
class App extends Component {render() {return <div>这是第一个类组件</div>;}
}
​
// 导出
export default App;

2、组件传值(父-子)

组件间传值,在React中是通过只读属性props来完成数据传递的。

props:接受任意的入参,并返回用于描述页面展示内容的React元素。

2.1、函数组件

函数组件传值使用props:以形参的形式给函数传递props参数。(与vue的思想是一样的)

例如,有子组件src/Components/Item.jsx,代码如下:

import React from "react";
​
const Item = (props) => {return (<div>海纳百川有容乃大,{props.next}。 -- {props.name}</div>);
};
​
export default Item;

要想在父组件中给其传递namenext值,则父组件src/App.jsx可以写成:

import React from "react";
​
import Item from "./Components/Item";
​
class App extends React.Component {render() {return <Item name="林则徐" next="壁立千仞无欲则刚"></Item>;}
}
​
export default App;

React的父传子的方式与Vue类似,都是通过调用子组件给子组件传递自定义属性方式进行传值的。

2.2、类组件

在父组件中通过自定义属性向子组件传值后,如何在子级类组件中获取传递过来的值呢?

我们可以在子级类组件中通过this.props属性来获取传递到子组件的值,如下:

import React, { Component } from "react";
​
class Item extends Component {render() {return (<div>海纳百川有容乃大,{this.props.next}。 -- {this.props.name}</div>);}
}
​
export default Item;

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

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

相关文章

文件系统错误(-805305975)

背景 自己在一次无意中进行图片打开的时候突然发现了一个bug&#xff0c;使用windows10自带的照片查看器无论是打开后缀格式为jpg的图片还是后缀为png的图片&#xff0c;电脑反应都很慢&#xff0c;开始以为是图片太大导致的&#xff0c;后来换了小图片尝试还是不行&#xff0c…

AOI外观检测机可以识别哪些塑胶件缺陷?

塑胶件是由塑料材料制成的零部件或产品。塑料是一种可塑性强、耐腐蚀、轻质且具有良好绝缘性能的材料&#xff0c;因此被广泛用于各种工业和日常用品的制造中。塑胶件可以通过注塑、挤出、吹塑等工艺生产&#xff0c;形状和尺寸可以根据设计要求灵活调整。 塑胶件在各行各业中…

UE5 编辑器启动模式下去掉左上角的Clink for Mouse Control

Edit > Editor Preferences > Game Gets Mouse Control 把这个勾去掉

DFS算法系列 回溯

DFS算法系列-回溯 文章目录 DFS算法系列-回溯1. 算法介绍2. 算法应用2.1 全排列2.2 组合2.3 子集 3. 总结 1. 算法介绍 回溯算法是一种经典的递归算法&#xff0c;通常被用来解决排列问题、组合问题和搜索问题 基本思想 从一个初始状态开始&#xff0c;按一定的规则向前搜索&…

传世手游之冰雪传世_经典角色扮演PK类三职业传奇手游

传世手游之冰雪传世_经典角色扮演PK类三职业传奇手游_Linux服务端_通用视频架设教程_GM网页授权物品后台_苹果IOS安卓双端 源码仅供学习研究之用&#xff0c;请勿商用或者其他违法用途&#xff0c;产生其他后果与本站无关 下载地址&#xff1a;极速云

动态代理导致的Metaspace OOM(元空间内存溢出)问题

个人博客地址&#xff1a;https://blog.flycat.tech/archives/1710866783664 背景 我们团队的一个项目&#xff0c;测试环境最近隔三岔五报错&#xff0c;虽然不是生产环境&#xff0c;但既然有报错那还是得排查下&#xff0c;以免带到了生产环境导致事故。 登录上测试环境服…

navicat远程连接mysql的异常解决-1130-2003-10061

结论&#xff1a; 1、修改数据库下root用户的host字段(为空或%) 2、修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件下 bind-address 的配置为 0.0.0.0 或者屏蔽此配置内容 (默认配置是&#xff1a; bind-address 127.0.0.1) 补充&#xff1a; 查看数据库下用户与host字段的关…

代码签名证书需要多少钱?

使用网络安全领域最知名的品牌来保护您的内容。 代码签名证书是有助于保护用户免遭下载文件或不受信任的应用程序的数字证书。 目前价格可以在Gworg控制面板里面查看价格&#xff0c;这样看到的价格可以包括所有的机构不同的价格。 概括 组织验证证书。1-3 年有效期选项。每个代…

实验一:配置IP地址

实验环境 主机A和主机B通过一根网线相连 需求描述 为两台主机配置IP地址&#xff0c;验证IP地址是否生效&#xff0c;验证同一网段的两台主机可以互通&#xff0c;不同网段的主机不能直接互通 一.实验拓扑 二.推荐步骤 1.为两台主机配置P地址&#xff0c;主机A为192.168.1.…

一款功能齐全的iOS混淆工具介绍及功能详解

机缘巧合偶遇iOS马甲包业务&#xff0c;前期也使用过目前市面上其他得工具&#xff0c;实际效果不太理想。经过大量实践&#xff0c;开发出一款功能齐全的混淆工具。工具的主要功能OC、C、Swift已封装成Mac应用&#xff0c;其他功能还在封装中&#xff0c;敬请期待。 马甲包的本…

Go gin框架(详细版)

目录 0. 为什么会有Go 1. 环境搭建 2. 单-请求&&返回-样例 3. RESTful API 3.1 首先什么是RESTful API 3.2 Gin框架支持RESTful API的开发 4. 返回前端代码 go.main index.html 5. 添加静态文件 main.go 改动的地方 index.html 改动的地方 style.css 改动…

19.java openCV4.x 入门-Imgproc之图形绘制

专栏简介 &#x1f492;个人主页 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f4f0;专栏目录 Imgproc之图像绘制 一、直线绘制字段1…

基于Springboot的酒店管理系统

基于SpringbootVue的酒店管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 网站首页 客房服务 客房信息 酒店公告 个人中心 后台登录 用户管理 客房类型管理…

微软搭建零售新媒体创意工作室大举抢占数字营销广告市场

“微软新零售创意工作室新平台利用生成式人工智能&#xff0c;在几秒钟内轻松定制横幅广告。零售媒体预计到2026年将成为一个价值1000亿美元的行业。” 零售媒体在过去几年中发展迅速。根据eMarketerOpens在新窗口的数据&#xff0c;预计到2024年&#xff0c;仅美国的零售媒体…

Python --- 怎么把Python当计算器用?(小白自学笔记)

怎么把Python当计算器用&#xff1f;(小白自学笔记) Part I&#xff1a;标准数学包的导入 今天刚刚装了python&#xff0c;打算用它来取代matlab的基本计算功能&#xff0c;当我的日常计算器用。(这里还有一个捷径&#xff0c;如果你跟我一样也是纯小白的话&#xff0c;直接问c…

并发 MiniHttp 服务器

项目需求 实现一个http 服务器项目&#xff0c;服务器启动后监听80端口的tcp 连接&#xff0c;当用户通过任意一款浏览器访问我们的http服务器&#xff0c;http服务器会查找用户访问的html页面是否存在&#xff0c;如果存在则通过http 协议响应客户端的请求&#xff0c;把页面…

SQLite数据库文件格式(十五)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite 4.9的虚拟表机制(十四) 下一篇&#xff1a;SQLite超详细的编译时选项&#xff08;十六&#xff09; ► 目录 本文档描述和定义磁盘上的数据库文件 自 SQLite 以来所有版本使用的格式 版本 3.0.0 &#xff08;2004-06-18…

HCIP的学习(8)

OSPF数据报文 OSPF头部信息&#xff08;公共固定&#xff09; 版本&#xff1a;OSPF版本&#xff0c;在IPv4网络中版本字段恒定为数值2&#xff08;v1属于实验室版本&#xff0c;v3属于IPv6&#xff09;类型&#xff1a;代表具体是哪一种报文&#xff0c;按照1~5排序&#xff…

AIGC 探究:人工智能生成内容的技术原理、广泛应用、创新应用、版权问题与未来挑战

AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;即人工智能生成内容&#xff0c;其核心在于利用深度学习技术&#xff0c;尤其是基于神经网络的模型&#xff0c;来模拟人类创作过程&#xff0c;自主生成高质量的文本、图像、音频、视频等各类内容。神经…