实战一个react(0-1)项目

news2024/11/29 9:55:44

文章目录

  • 1. 安装
  • 2. 完成一个组件开发
  • 3. 添加路由
  • 3. 引入element-react
          • 1. 运行发现报错./node_modules/element-react/dist/npm/es5/src/locale/format.js
          • 2. 接着又报错The <Router /> component appears to be a function component that returns a class instance. Change Router to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `Router.prototy
          • 3. 再次启动发现之前设置的router失效了,没办法只能重新设置
          • 4. 报错Warning: Legacy context API has been detected within a strict-mode tree. The old API will be supported in all 16.x releases, but applications using it should migrate to the new version. Please update the following components: Menu, MenuItem, MenuItemGro
          • 5. 报错src/reportWebVitals.js Line 0: Parsing error: Cannot find module 'babel-plugin-transform-runtime'
  • 4. react基础知识
      • 1. 生命周期: 三阶段分为 挂载,更新,卸载
  • 待更新。。。。


1. 安装

准备:要求:Node >= 8.10 并且 npm >= 5.6

1.全局安装
npm install -g create-react-app
2. 创建项目
npx create-react-app my-react
成功后
在这里插入图片描述

2. 完成一个组件开发

  1. 新建组件ShoppingList
    在这里插入图片描述

  2. 引入组件
    在这里插入图片描述
    注意:组件导出和引入方式一一对应

1. export { ShoppingList };导出方式,对应import {ShoppingList} from './index/index.js'
2. export default ShoppingList;导出方式,对应import ShoppingList from './index/index.js'
  1. 运行后
    在这里插入图片描述

3. 添加路由

  1. 安装 npm install react-router-dom
    报错: 1.
    Attempted import error: ‘Switch’ is not exported from ‘react-router-dom’ (imported as ‘Switch’).
    ERROR in ./src/App.js 14:37-43
    export ‘Switch’ (imported as ‘Switch’) was not found in ‘react-router-dom’ (possible exports:
    因为react-router-dom 6.0以后 Switch 不能用 我直接安装的最新版本是"^6.11.2"

改成:
在这里插入图片描述

3. 引入element-react

  1. 安装:npm i element-react --save
  2. 主题包: npm install element-theme-default --save
  3. 引入:
//element-react-ui
import ReactDOM from 'react-dom';
import 'element-theme-default';
1. 运行发现报错./node_modules/element-react/dist/npm/es5/src/locale/format.js

那就安装依赖npm install react-hot-loader@next --save再次运行就好了

2. 接着又报错The component appears to be a function component that returns a class instance. Change Router to a class that extends React.Component instead. If you can’t use a class try assigning the prototype on the function as a workaround. `Router.prototy

我是先设置好router才安装的element react要重新安装下npm i react-hot-loader -save就好了

3. 再次启动发现之前设置的router失效了,没办法只能重新设置
  1. app.js中使用
    在这里插入图片描述
  2. 两个页面文件内容
    在这里插入图片描述
  3. 运行结果
    在这里插入图片描述

在这里插入图片描述

4. 报错Warning: Legacy context API has been detected within a strict-mode tree. The old API will be supported in all 16.x releases, but applications using it should migrate to the new version. Please update the following components: Menu, MenuItem, MenuItemGro

直接关闭<React.StrictMode></React.StrictMode>标签 ,不要提示
在这里插入图片描述

5. 报错src/reportWebVitals.js Line 0: Parsing error: Cannot find module ‘babel-plugin-transform-runtime’

报着缺什么补什么npm install babel-plugin-component -D
之后清理缓存npm cache clean --force
重新npm install
运行就好了

4. react基础知识

1. 生命周期: 三阶段分为 挂载,更新,卸载

  1. 挂载:
  1. constructor():组件被创建时调用,用于初始化组件的状态和绑定方法。

  2. static getDerivedStateFromProps(props, state):在组件挂载之前和更新时调用,用于根据 props 计算 state 的值。

  3. render():在组件挂载时调用,用于渲染组件的 UI。

  4. componentDidMount():在组件挂载后调用,用于执行一些副作用操作,例如网络请求或订阅事件。

使用方法:
声明变量的两种方法:1. 直接var let const 变量名字=值。 2. 在constructor方法里边使用this.state.变量名字=值(这种方法获取也要用this.state。。。)

在这里插入图片描述

  1. 更新

static getDerivedStateFromProps(props, state):在组件挂载之前和更新时调用,用于根据 props 计算 state 的值。
shouldComponentUpdate(nextProps, nextState):在组件更新时调用,用于判断是否需要重新渲染组件。
render():在组件更新时调用,用于渲染组件的 UI。
getSnapshotBeforeUpdate(prevProps, prevState):在组件更新时调用,用于获取更新前的 DOM 状态。
componentDidUpdate(prevProps, prevState, snapshot):在组件更新后调用,用于执行一些副作用操作,例如更新 DOM 或订阅事件。

使用方法:在组件挂载之前和更新时调用,用于根据 props 计算 state 的值。

在这里插入图片描述

  1. 卸载

componentWillUnmount():在组件卸载前调用,用于清理组件的副作用操作,例如取消网络请求或取消订阅事件。

除了上述生命周期方法外,还有一些其他的方法,例如 componentDidCatch() 用于处理组件中的错误,getDerivedStateFromError() 用于根据错误计算组件的状态等。

待更新。。。。

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

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

相关文章

ABP VNext认证授权获取Token

ABP VNext认证授权获取Token 1.Password授权方式获取1.1 请求说明1.2 请求示例1.3 请求参数 2.authorization_code模式获取2.1 无认证授权&#xff0c;跳转至授权认证中心2.2 用户密码登录2.3 登录成功&#xff0c;服务器会跳转至redirect_url所指地址 1.Password授权方式获取 …

vue-kindeditor 安装和解决问题

效果图 kindeditor 引入 一、去官网下载 kindeditor 包 官方链接 二、在vue里的static文件夹下 创建一个 文件夹名字叫 kindeditor&#xff0c; 把下载好的文件放在这里 三、在 公共组件 components 下 创建kindeditor.vue 文件 <template><div class"kindedit…

拿到字节跳动奖学金,入职字节跳动做科研,他们经历了什么?

前不久&#xff0c;第三届字节跳动奖学金计划已经正式启动。 自 2021 年起&#xff0c;字节跳动奖学金计划已经完成了两届评选&#xff0c;共有 19 位优秀学子荣获每人 10 万元人民币的奖学金。 在奖学金支持下&#xff0c;他们获得了新的科研项目费用、学术交流机会&#xff0…

高压放大器在驱动压电陶瓷进行铝板无损检测中的应用研究

想要达成在不损害或不影响被测对象使用性能及自身性质的前提下&#xff0c;对被测对象内部进行缺陷&#xff0c;结构&#xff0c;失效分析&#xff0c;就得用到无损检测&#xff08;Non Destructive Testing&#xff09;技术&#xff0c;最常用的无损检测方法有很多&#xff0c…

【网络安全知识】网络技术领域术语大全,强烈建议收藏!

自主访问控(DAC:Discretionary Access Control) 自主访问控制(DAC)是一个访问控制服务&#xff0c;其执行一个基于系统实体身份的安全政策和它们的授权来访问系统资源。 双附接集线器(DAC: Dual-attached Concentrator) 双附接集线器(DAC)是FDDI或CDDI集线器有能力接入到一个…

RK3568 AP6275S蓝牙驱动程序调度过程

1、前言 今年3月份调度了RK3568驱动程序&#xff0c;当时由于时间的问题&#xff0c;AP6275S蓝牙驱动程序没有调试成功。当时仔细检查的设备树的配置。 wireless_bluetooth: wireless-bluetooth {compatible "bluetooth-platdata";clocks <&rk809 1>;cl…

离散数学_十章-图 ( 4 ):图的表示和图的同构

&#x1f4f7;10.4 图的表示和图的同构 1. 图的表示1.1 邻接表1.1.1 简单图的邻接表1.1.2 有向图的邻接表 1.2 邻接矩阵❗在邻接表和邻接矩阵之间取舍1.3 关联矩阵 2. 图同构3. ⚡判断两个简单图是否同构 图的表示方式有很多种&#xff0c;选择最方便的表示有助于对图的处理~ …

Navicat 面向 PostgreSQL 查询超时的工具解决方案

文章目录 Navicat 面向 PostgreSQL 查询超时的工具解决方案查询超时的必要性应用场景 查询分析器 | Navicat Monitor在数据库级别设置为特定用户设置查询超时 结语 Navicat 面向 PostgreSQL 查询超时的工具解决方案 早前&#xff0c;我们发表过一篇《PostgreSQL 与 Navicat &am…

Datax ftp写入hive

这是一个巨大的坑&#xff0c;网上对这块的完整描述真的很少&#xff0c;新手真的会很迷茫&#xff01;&#xff01;&#xff01; 插件 选择插件 reader插件选择&#xff1a;ftpread write插件选择&#xff1a;hdfswrite 参数配置 reader参数 "parameter": {/…

干货|SpringCloud全家桶微服务初探

SpringCloud的从整体架构上看&#xff0c;相对来说是完整的、庞大的。它不仅仅是一个基础性架构工具&#xff0c;它为微服务架构提供了一个“全家桶”的套餐。每一个模块关注各自的职能&#xff0c;并且能够很好地配合与协作&#xff0c;能够帮助入门者快速搭建起一套微服务架构…

前后端联调跨域问题

文章目录 什么是同源策略如何判断是否同源&#xff1f;跨域资源共享(CORS)如何解决跨域问题 什么是同源策略 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。 如何判断是否同源&#xff1f; 如果…

从中国人民大学与加拿大女王大学金融硕士的学员构成,了解金融行业都有哪些职位

金融行业最受欢迎的岗位莫过于券商、银行、基金公司、私募市场、体制内&#xff08;监管部门、交易所等&#xff09;、信托、大企业投资部、保险、管理咨询、资产管理。在当下如果要选择工作&#xff0c;想找就业率第一、薪酬排名第一的行业&#xff0c;那一定是金融工作。中国…

03 redis新类型bitmap/hyperloglgo/GEO

亿级系统中常见的四种统计 聚合统计 统计多个集合元素的聚合结果&#xff0c;就是前面讲解过的交差并等集合统计交并差集和聚合函数的应用 排序统计 抖音视频最新评论留言的场景&#xff0c;请你设计一个展现列表。考察你的数据结构和设计思路设计案例和回答思路以抖音vcr最…

3.java高级之GUI编程

1.gui (graphical user interface) awt sun公司最早的gui,不美观,不兼容各平台swing : awt升级2.顶层容器(只有一个)(其他的只能放这里)Jframe Jdialog对话框 Jwindow(x) //在main方法写fnew Jframe(); f.setSize(300,300); //设置大小f.setTitle("hello"); //设置…

java条件语句

文章目录 一、java条件语句1、Java 条件语句 - if...else2、Java switch case 语句 总结 一、java条件语句 1、Java 条件语句 - if…else Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。 语法 if 语句的语法…

你真的了解kotlin中协程的suspendCoroutine原理吗?

文章目录 什么是协程suspendCoroutineUninterceptedOrReturnsuspendCoroutineUninterceptedOrReturn存在的问题suspendCoroutinesuspendCancellableCoroutine ​ 引言&#xff1a; 在Kotlin协程中&#xff0c;如何让一个suspned 函数挂起&#xff1f;如何让挂起协程恢复&#…

STM32G4 比较器COMPx(寄存器开发)

目录 1. 特性1.1 框图1.2 比较器输入信号SEL1.3 比较器滞回选择HYST1.4 比较器的输出1.5 LOCK机制 2. 编程2.1 初始化步骤2.2 举例 STM内部的比较器是模拟量的比较器&#xff0c;其与APB2时钟同步&#xff0c;在RCC时钟控制器中没有COMx时钟使能标志位&#xff0c;其时钟的使能…

前端自学要多久?自学前端一般多久可以找到差不多的工作?

好程序员今天给各位同学分享自学前端的高效率路径&#xff0c;最快4个月&#xff0c;平均6个月&#xff01; 一、html, CSS (1月) 1.基本语法, 2.做2-3个项目实战 3.刷面试题 二、JavaScript (1.5月) 1.基本语法 2.实际案例练习融合HTML, Css项目实战 3.刷题面试题 三、Vue/Rea…

Java 高级应用-多线程-(三)实现 Callable 接口与使用线程池创建线程

实现 Callable 接口 • 与使用 Runnable 相比&#xff0c; Callable 功能更强大些 – 相比 run()方法&#xff0c;可以有返回值 – 方法可以抛出异常 – 支持泛型的返回值&#xff08;需要借助 FutureTask 类&#xff0c;获取返回结果&#xff09; • Future 接口&#xff08;…

游戏研发项目管理

基于阶段模式进行游戏新产品研发过程&#xff0c;以及基于这种研发过程Leangoo 领歌提供的项目模板。 二、游戏产品开发流程 通常开发一款新游戏大体上会按照如下流程来进行&#xff1a; 1&#xff09; 概念阶段 – Concept 主策根据产品创意&#xff0c;确定游戏策划草案&a…