05_react应用(基于react脚手架)

react应用(基于react脚手架)

  • 一、使用 create-react-app 创建 react 应用
    • 1、react 脚手架
    • 2、创建项目并启动
    • 3、react 脚手架项目结构
  • 二、样式冲突解决方案、 react 插件安装、编码流程
    • 1、样式冲突
    • 2、vscode 的 react 插件安装
    • 3、功能界面的组件化编码流程
    • 4、引入包、组件规则
  • 三、组件的组合使用-TodoList
    • 2、子组件向 父组件传递参数
    • 3、nanoid 库,体积较小,可以生成唯一标识
    • 4、todoList 案例相关知识点

一、使用 create-react-app 创建 react 应用

1、react 脚手架

  1. xxx 脚手架:用来帮助程序员快速创建一个基于 xxx 库的模版项目
    a. 包含了所有需要的胚子(语法检查、jsx 编译、devServer…)
    b. 下载好了所有相关的依赖
    c. 可以直接运行一个简单的效果
  2. react 提供了一个用于创建 react 项目的脚手架库:create-react-app
  3. 项目的整体技术架构为: react + webpack + es6 + eslint
  4. 使用脚手架开发的项目的特点:模块化、组件化、工程化

工程化: 代码编写完成以后一系列都可以自动运行

2、创建项目并启动

**第一步,**全局安装: npm install -g create-react-app
**第二步,**切换到想要创建项目的目录,使用命令: create-react-app hello-react
**第三步,**进入项目文件夹: cd hello-react
**第四步,**启动项目: npm start

创建成功后:
npm run eject 命令
react 默认把所有 webpack 配置文件隐藏了, npm run eject 命令可以显示全部的配置文件

3、react 脚手架项目结构

public — 静态资源文件夹

favicon.ico ------ 网站页签图标
index.html ------- 主页面
logo192.png ------ logo 图
logo512.png ------ logo 图
manifest.json ---- 应用加壳的配置文件
robots.txt ------- 爬虫协议文件

src —源码文件夹

App.css ----------- App 组件的样式
App.js ------------ App 组件
App.test.js ------- 用于给 APP 做测试,基本不用,直接运行看效果即可
index.css --------- 样式
index.js ---------- 入口文件
logo.svg ---------- 图片
reportWebVitals.js- 记录页面的性能
setupTests.js ----- 应用的整体测试,单元测试,组件测试(jest-dom 支持)

<!-- index.html --- 主页面 -->
<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><!-- 用于引入页签的图标  %PUBLIC_URL% public的文件夹路径 --><link rel="icon" href="%PUBLIC_URL%/favicon.ico" /><!-- 用于开启理想视口,用于移动端网页的适配 --><meta name="viewport" content="width=device-width, initial-scale=1" /><!-- 用于配置浏览器页签+地址栏的颜色,仅支持安卓手机浏览器 --><meta name="theme-color" content="#000000" /><!-- 网站描述信息 --><metaname="description"content="Web site created using create-react-app"/><!-- 用于指定网页添加到手机主屏幕后的图标(苹果手机) --><link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /><!-- 应用加壳 ,配置应用的权限等等信息--><link rel="manifest" href="%PUBLIC_URL%/manifest.json" /><title>React App</title></head><body><!-- 若浏览器不支持js 则展示noscript标签中的内容 --><noscript>You need to enable JavaScript to run this app.</noscript><!-- 这个容器必须有 --><div id="root"></div></body>
</html>

二、样式冲突解决方案、 react 插件安装、编码流程

1、样式冲突

避免样式冲突,使用样式模块化 文件需要命名 index.module.css
引入
import Hello from ‘./index.module.css’

className = {Hello.title}

2、vscode 的 react 插件安装

VS Code ES7+ React/Redux/React-Native/JS snippets

在创建的 js 文件用 rcc 就能够快速生成文件名的组件模板

3、功能界面的组件化编码流程

1、拆分组件:拆分界面,抽取组件
2、实现静态组件:使用组件实现静态页面效果
3、实现动态组件
3.1 动态显示初始化数据
3.1.1 数据类型
3.1.2 数据名称
3.1.3 保存在哪个组件
3.2 交互(从绑定事件监听开始)

4、引入包、组件规则

先引入第三方包
自己的包、组件
最后是样式

三、组件的组合使用-TodoList

功能:组件化实现,需求如下:

1、显示所有 todo 列表
2、输入文本,点击按钮显示到列表的首位,并清除输入的文本

2、子组件向 父组件传递参数

父组件先使用 props 传给子组件函数, 子组件在合适的时候调用该函数

3、nanoid 库,体积较小,可以生成唯一标识

yarn add nanoid
import {nanoid} from “nanoid”

4、todoList 案例相关知识点

1、拆分组件,实现静态组件。注意: className 、 style 的写法
2、动态初始化列表,如何确定将数据放在哪个组件的 state 中?
– 某个组件使用:放在其自身的 state 中
– 某些组件使用:放在他们共同的父组件 state 中(官方称此操作为:状态提升)
3、关于父子组件之间的通信
1)【父组件】给【子组件】传递数据:通过 props 传递
2)【子组件】给【父组件】传递数据:通过 props 传递,要求父组件提前给子组件传递一个函数
4、注意 defaultChecked 和 checked 的区别,类似的还有: defaultValue 和 value
5、状态在哪里,操作状态的方法就在哪里

完整代码:https://gitee.com/qiao728/react-todo-list.git

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

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

相关文章

单挑ChatGPT模型,AI最强竞争对手来了!

在2024年3月&#xff0c;Anthropic公司发布了最新的Claude 3系列模型&#xff0c;包括Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus三款模型。这些模型在性能上全面超越了之前的版本&#xff0c;并且在多个基准测试上表现出色&#xff0c;被认为是AI技术的一大突破。Claude…

C练手题--Exclusive “or“ (xor) Logical Operator 【8 kyu】

一、原题 链接&#xff1a;Training on Exclusive "or" (xor) Logical Operator | Codewars Exclusive "or" (xor) Logical Operator Overview In some scripting languages like PHP, there exists a logical operator (e.g. &&, ||, and, or, e…

Android源码编译_内置apk

在开发过程中&#xff0c;有一部分apk&#xff0c;我们是需要出厂内置好的&#xff0c;例如输入法、客户定制app等&#xff0c;这里内置分两种&#xff0c;一种是只内置apk&#xff0c;不含apk源码&#xff0c;一种是包含apk源码。 一、如何将apk内置到系统 1、首先将apk放到…

从零开始:scikit-learn决策树分类实战

在这个大数据和人工智能盛行的时代&#xff0c;机器学习已经成为了人们日常生活中不可或缺的一部分。从推荐系统到自动驾驶&#xff0c;背后都有机器学习的身影。今天&#xff0c;我们将一起探索一种简单却强大的机器学习算法——决策树&#xff0c;并使用Python中的scikit-lea…

基于RDMA的nfs服务

背景 ib网卡nfs服务实现简单的存储共享&#xff0c;暂时顶替还未上线的存储设备&#xff0c;同时也解决 单纯的使用scp rsync等不支持rdma协议拷贝无法正确使用ib网络 说明 前提是系统上已配置安装好ib网卡驱动&#xff0c;且ib网络正常使用&#xff0c;配置参考 https://bl…

中国各城市金融科技公司数目数据集(2009-2023年)

金融科技&#xff08;FinTech&#xff09;是金融与科技深度融合的产物&#xff0c;它利用大数据、云计算、人工智能、区块链等现代信息技术手段&#xff0c;对传统金融产品、业务、流程及服务模式进行革新&#xff0c;从而实现金融服务效率的提升、风险管理的优化以及客户体验的…

【解决方案】令牌桶限流器(Redis+LUA+Python实现)

1 缘起 系统需要对某些功能做限流,因为,这个功能CPU消耗远高于其他功能,最高可占用100%分配的CPU,导致整个系统无法对外提供服务。 为了保证系统稳定运行,以及缓解CPU高消耗,对这些高CPU消耗的功能做限流处理, 而限流方案有多种:计数器算法、滑动窗口算法、漏桶算法和…

C语言 | Leetcode C语言题解之第389题找不同

题目&#xff1a; 题解&#xff1a; char findTheDifference(char* s, char* t) {int n strlen(s), m strlen(t);int ret 0;for (int i 0; i < n; i) {ret ^ s[i];}for (int i 0; i < m; i) {ret ^ t[i];}return ret; }

【C++设计模式】(三)创建型模式:单例模式

文章目录 &#xff08;三&#xff09;创建型模式&#xff1a;单例模式饿汉式懒汉式饿汉式 v.s. 懒汉式 &#xff08;三&#xff09;创建型模式&#xff1a;单例模式 单例模式在于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。在某些情况下&#xff0…

24.9.1学习心得

VGG&#xff08;Visual Geometry Group&#xff09;网络是由牛津大学视觉几何小组提出的一种卷积神经网络模型&#xff0c;该模型因其在ImageNet大规模视觉识别挑战赛&#xff08;ILSVRC 2014&#xff09;中的优异表现而闻名。VGG模型的特点在于其架构的简单性和一致性&#xf…

XSS 漏洞 - 学习手册

接下来的日子我会按照目录进行笔记的更新&#xff0c;待本模块更新完毕后&#xff0c;删除此条注释。 备注&#xff1a;即使是更新完了&#xff0c;我知道也会有不足&#xff0c;所以会不定期添加或者删除或者优化某些内容&#xff0c;感兴趣的小伙伴可以关注一波。 0x01&#…

通义说【线性代数】线性方程组和线性代数的关系

线性方程组和线性代数之间有非常紧密的关系。事实上&#xff0c;线性方程组是线性代数的一个核心主题&#xff0c;而线性代数提供了解决线性方程组的一系列理论和工具。 线性方程组 线性方程组是由一组线性方程构成的集合&#xff0c;每个方程都表示未知变量的线性组合等于一…

天气数据爬取

目录 历史气象数据获取浏览器访问模拟 历史气象数据获取 主要的python包 requests BeautifulSoup re pandas lxml 浏览器访问模拟 根据浏览器Request-Header参数&#xff0c;让request模拟浏览器行为 import requests from bs4 import BeautifulSoup import re import pandas…

C#线程同步

c#线程同步代码示例 仔细考虑下面这段代码是不是输出0 const int _max 1000000;private int _count 0;void Start(){Task task Task.Run(() >{Decr();});for (int i 0; i < _max; i){_count;}task.Wait();Debug.Log(_count);}void Decr(){for(int i 0; i < _max;…

国内招聘市场发展历程

大数据、人工智能与社交媒体深度融合&#xff0c;传统招聘网站用户粘性低、信息传播效率低、招聘成本开支大、平台运营与宣传成本高昂&#xff0c;返利招聘或许是一种创新性的解决方案。本文将以蜂媒招聘网为例&#xff0c;深入探讨返利招聘模式的社群属性、用户粘度属性及自助…

一个比 Nginx 还简单的 Web 服务器

企业级的 Web 服务器非常多&#xff0c;Nginx、Tomcat、Apache、IIS、FastAPI、Flask 等。今天松哥再给大家介绍一个开源的 Web 服务器&#xff0c;这款服务器具备自动 HTTPS 功能和高度可配置性&#xff0c;它的名字是&#xff1a;Caddy。 Caddy 是一个 Go 编写的 Web 服务器&…

力扣SQL仅数据库(570-579)

570. 至少有5名直接下属的经理 需求&#xff1a; 编写一个解决方案&#xff0c;找出至少有五个直接下属的经理 数据准备&#xff1a; Create table If Not Exists Employee (id int, name varchar(255), department varchar(255), managerId int) Truncate table Employee i…

PyTorch中,动态调整学习率(Learning Rate Scheduling),也可以根据损失函数的损失数值自动调整学习率

在PyTorch中&#xff0c;动态调整学习率&#xff08;Learning Rate Scheduling&#xff09;是一种常用的技术&#xff0c; 用于在训练过程中根据一定的策略调整学习率&#xff0c;以优化模型的训练效果和收敛速度。以下是一些常见的学习率调整策略&#xff1a; 1. **固定步长…

HTML沙漏爱心

目录 写在前面 完整代码 下载代码 代码分析 系列文章 写在最后 写在前面 教你用HTML语言实现炫酷的沙漏爱心,该代码不仅可以用电脑运行,手机、平板也可以直接运行哦。 完整代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><…

【awk 】如何将一个文件按照同名字段进行合并?

目录 题目解答 题目 使用awk文本处理工具将一个名为c的文件按照同名字段进行合并&#xff0c;c的内容如下所示&#xff1a; 192.168.1.1: httpd 192.168.1.1: tomcat 192.168.1.2: httpd 192.168.1.2: postfix 192.168.1.3: mysqld 192.168.1.4: httpd示例输出&#xff1a; …