从0-1实战react项目

article/2025/8/30 11:41:26

文章目录

  • 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'
          • 6. 使用From组件时候提示“refs”已弃用。
      • 1. NavMenu 导航菜单结合react-router-dom使用方式
  • 4. react基础知识
      • 1. 生命周期: 三阶段分为 挂载,更新,卸载
  • 5. 添加axios并做跨域代理设置
        • 1. 添加axios
        • 2. 使用http-proxy-middleware实现代理
  • 待更新。。。。


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
运行就好了

6. 使用From组件时候提示“refs”已弃用。

在这里插入图片描述
更换成React.createRef()
在这里插入图片描述

1. NavMenu 导航菜单结合react-router-dom使用方式

自己捯饬好久,刚开始分开两个页面写的关联不到一起,引入link就报错,最后写在一个页面就好的,具体原因还没研究
在这里插入图片描述
在这里插入图片描述
以上还没有完全动态更新,router标签内容还是单独写的。下边是根据router.js文件使用的动态更新方式
在这里插入图片描述

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() 用于根据错误计算组件的状态等。

5. 添加axios并做跨域代理设置

1. 添加axios

  1. 下载安装
npm install axios
  1. 引入使用
import axios from 'axios';
axios.get('/api/data').then(response => {console.log(response.data);}).catch(error => {console.log(error);});

2. 使用http-proxy-middleware实现代理

  1. 下载安装
npm install http-proxy-middleware --save-dev
  1. 项目的根目录下创建一个 setupProxy.js 文件
const { createProxyMiddleware } = require('http-proxy-middleware');module.exports = function(app) {app.use("/api",createProxyMiddleware( {"target": '地址',"secure": false,"changeOrigin": true,"pathRewrite": {'^/api': ''}}));
};
  1. react 使用createProxyMiddleware 多了/api
    刚开始请求发送到后端就莫名多了一个api/,是因为代理配置没做好,根据以上配置好之后重新运行就好了

待更新。。。。


http://chatgpt.dhexx.cn/article/TJFp6xHu.shtml

相关文章

第4集丨JavaScript 使用原型(prototype)实现继承——最佳实战2

目录 一、临时构造器方式1.1 代码实现1.2 代码分析 二. 增加uber属性&#xff0c;用于子对象访问父对象2.1 实现分析2.2 代码实现 三. 将继承封装成extend()函数3.1 代码实现3.1.1 临时构造器实现extend()3.1.2 原型复制实现extend2() 3.2 代码测试3.2.1 测试extend()函数3.2.1…

jstorm安装配置

jstorm安装配置 前言下载配置启动 前言 jstorm介绍 jstorm JStorm 是一个类似Hadoop MapReduce的系统&#xff0c; 用户按照指定的接口实现一个任务&#xff0c;然后将这个任务递交给JStorm系统&#xff0c;Jstorm将这个任务跑起来&#xff0c;并且按7 * 24小时运行起来&…

《JavaScript》重学JS-细聊一下prototype、__proto__与constructor(超详解版)

求关注&#xff0c;求收藏&#xff0c;求点赞&#xff0c;非常感谢&#xff01;你的每一个阅读都是我的力量源泉&#xff01; 前言 最近在比对class以及将class编译成es5后的代码&#xff0c;看的是晕头转向&#xff0c;尤其在原型链这一块&#xff0c;发现之前的了解实在有些…

【React进阶之路01】- JSX演变成真实DOM

什么是 JSX JSX 是 ECMAScript 一个类似 XML 的语法扩展。基本上&#xff0c;它只是为 React.createElement() 函数提供语法糖&#xff0c;从而让在我们在 JavaScript 中&#xff0c;使用类 HTML 模板的语法&#xff0c;进行页面描述。 JSX编译&#xff08;babel&#xff09;…

JStorm—实时流式计算框架入门介绍

JStorm介绍 JStorm是参考storm基于Java语言重写的实时流式计算系统框架&#xff0c;做了很多改进。如解决了之前的Storm nimbus节点的单点问题。   JStorm类似于Hadoop MapReduce系统&#xff0c;用户按照指定的接口去实现一个任务&#xff0c;任务提交给JStorm进行运行&…

jstorm基本概念

基本概念 longdafeng edited this page on 29 Sep 4 revisions Pages 69 0.7.1 changelist0.9.0 change list0.9.0 性能测试0.9.1_change_list0.9.2_change_list0.9.3_change_listAck 机制Acking Framework ImplementationApplication examplesBasic conceptionBuild JStormD…

ReactJS入门之Model层

目录 一&#xff1a;分层 二&#xff1a;使用DVA进行数据分层管理 三&#xff1a;在model中请求数据 四&#xff1a;mock数据 一&#xff1a;分层 上图中&#xff0c;左侧是服务端代码的层次结构&#xff0c;由 Controller 、 Service 、 Data Access 三层组成服务端系统…

初识Jstorm 多个bolt应用

最近接到任务说要使用jstorm处理业务&#xff0c;之前没接触过&#xff0c;只能硬着头皮来&#xff0c;接下来谈谈我这两天的收获 1&#xff0c;怎么了解jstorm&#xff0c;这个答案没什么固定的&#xff0c;但是我个人比较喜欢去看官方的文档&#xff0c;如果官方的文档实在找…

大数据(十五) - JStorm

JStorm 是一个分布式实时计算引擎&#xff0c;是淘宝开源的 随着Storm 的规模越来越大&#xff0c;发现原有的很多Storm设计&#xff0c;只能适合小集群中运行&#xff0c;当集群规模超过100台时&#xff0c;均会出现一些或这或那的问题。JStorm 比Storm更稳定&#xff0c;更强…

初识JavaScript---(1)

初识JavaScript———&#xff08;1&#xff09;&#xff01;&#xff01;&#xff01; 一、初识JavaScript 1.什么是JavaScript&#xff1f; JavaScript是运行在浏览器上的脚本语言&#xff0c;简称JS。JavaScript程序不需要我们程序员手动编译&#xff0c;编写完源代码之后…

【JavaScript高级进阶】构造函数和原型,学会prototype

目录 前言 1.构造函数和原型 1.1使用prototype解决内存浪费的问题 1.2constructor构造函数构造器构造函数 2.原型链 2.1js中成员查找规则 2.2原型对象this指向 2.3扩展内置对象 3.call作用 4.继承 4.1利用原型对象继承 写在最后 前言 哈喽哈喽大家好&#xff0c;因为…

Jstorm 基本概念

本质 基于消息的流水线处理模型是一套类似MapReduce一样的编程模型内核是一套调度系统 适合的业务 高并发的计算任务数据流之间相互无依赖 编程模型 Topology&#xff1a;即一个数据流的拓扑结构&#xff0c;包含多个Spout和BoltSpout&#xff1a;从外部获取数据&#xff…

JStorm和Storm比较

1、What——JStorm是什么&#xff1f;  概述&#xff1a; JStorm 是一个分布式实时计算引擎&#xff0c;类似Hadoop MapReduce的系统&#xff0c; 用户按照规定的编程规范实现一个任务&#xff0c;然后将这个任务递交给JStorm系统&#xff0c;Jstorm将这个任务跑起来&#xf…

JStorm Storm 上手demo

折线之间的内容整理自&#xff1a; http://blog.csdn.net/suifeng3051/article/details/38369689 -------------------------------------------------------------------------------------------------------------------------------------------- 在全面介绍Storm之前&…

PyTorch从零开始实现Transformer

文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码&#xff08;可直接运行&#xff09; 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…

jstorm storm 入门demo

jstorm和storm比较 jstorm 是阿里巴巴开源的基于storm采用Java重写的一套分布式实时流计算框架&#xff0c;使用简单&#xff0c;特点如下&#xff1a; 1&#xff0c;开发非常迅速: 接口简单&#xff0c;容易上手&#xff0c;只要遵守Topology&#xff0c;Spout&#xff0c;Bo…

JStorm介绍

一、简介 JStorm是一个分布式实时计算引擎。JStorm是一个类似于Hadoop MapReduce的系统&#xff0c;用户按照指定的接口实现一个任务&#xff0c;然后将这个任务交给JStorm系统&#xff0c;JStorm将这个任务跑起来&#xff0c;并按7*24小时运行。如果中间一个worker发生了意外…

马氏距离实例详解

介绍 马氏距离是由印度统计学家马哈拉诺比斯&#xff08;P. C. Mahalanobis&#xff09;提出的&#xff0c;表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系&#xff08;例如&#xff1a;一条关于身高的…

距离度量:闵氏、欧式、马氏、余弦、汉明等

目录 1. 闵氏距离&#xff08;Minkowski Distance&#xff09; 2. 欧式距离&#xff08;Euclidean Distance&#xff09; 3. 标准化欧式距离&#xff08;Standardized Euclidean distance&#xff09; 4. 马氏距离&#xff08;Mahalanobis Distance&#xff09; 5. 余弦距…

马氏距离(Mahalanobis Distance)推导及几何意义

看了一些博客对马氏距离的解释&#xff0c;似乎没有讲到本质的地方&#xff0c;本文从欧氏距离存在的问题开始入手&#xff0c;一步步推导出马氏距离&#xff0c;并得出结论&#xff1a;原始空间中的马氏距离等于坐标旋转变换及缩放后的空间中的欧氏距离。 假设数据集 X ∈ R N…