react + antdPro 从构建到运行 + 路由 + 组件 + 配置

2023-10-27

不定期更新 ~
好久没用了,这次自己重新熟悉下;有不对的地方或错误,希望大家多指正

快速构建

使用 create-react-app 快速构建 React 开发环境

	 cnpm install -g create-react-app
	 create-react-app my-app
	 cd my-app/
	 npm start

到这里项目就已经启动了 : 默认会访问 http://localhost:3000/,这里不多阐述了

项目结构

这里src下新增几个文件夹,后面会一一阐述
components - 组件
containers - 页面
Router - 路由
utils - 封装工具类
store - react-redux
在这里插入图片描述在这里插入图片描述

路由配置

项目构建出来默认是没有路由文件的,这里需要我们自己手动建一个
router文件
需要注意的是到这里并不是已经完成了,我们在官网上看到的使用路由是 import { Router, Route, Link } from 'react-router'
但是实际上我们看到需要引用的是import { BrowserRouter as Router, Route } from "react-router-dom";
原因是因为 后者比前者多出了 <Link> <BrowserRouter> 这样的 DOM 类组件。
因此我们只需引用 react-router-dom 这个包就行了。
在这里插入图片描述


import React from 'react'
import { BrowserRouter as Router, Route } from "react-router-dom";
import Login from './../containers/login';
import Home from './../containers/home';

function router() {
    return (
        <Router>
            <Route path="/home" component={Home} />
            <Route path="/login" component={Login} />
        </Router>);
}

export default router;

然后需要到 src下index.js 引入路由 并挂载

import React from 'react';
import { render } from 'react-dom';
// 由于 antd 组件的默认文案是英文,所以需要修改为中文

import moment from 'moment';
import 'moment/locale/zh-cn';
import 'antd/dist/antd.css';
import './index.css';
import Router from './Router/index'
moment.locale('zh-cn');



render(<Router />, document.getElementById('root'));

到这里我们就可以访问 http://localhost:3000/login

组件使用

Home页面引用并导入 Header Footer

import React from 'react';
import Header from './../../components/header'
import Footer from './../../components/footer'
const Home = () => {
    return (
        <div>
            <Header className="header" />
            <div>Home</div>
            <Footer className="footer" />
        </div>
    )
}
export default Home

header demo

import React from 'react';

const Header = () => {
    return (
        <div>
            header
        </div>
    );
};
export default Header;

utils工具类

const Utils = {
    // 时间相关处理 
    time: {
        // 获取当前日期: yyyy-MM-dd
        getCurrentDate() {
            const time = new Date()
            let yyyy = time.getFullYear()
            let MM = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1
            let dd = time.getDate()
            return yyyy + '-' + MM + '-' + dd
        },
        // 时间戳转化为标准时间显示
        timeStampTransform(timeStamp) {
            const time = new Date(timeStamp)
            let yyyy = time.getFullYear()
            let MM = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1
            let dd = time.getDate()
            let HH = time.getHours()
            let mm = time.getMinutes()
            let ss = time.getSeconds()
            return yyyy + '-' + MM + '-' + dd + ' ' + HH + ':' + mm + ':' + ss
        },
    }
}
export default Utils

上面我们写了一个时间转换的工具,
在使用前我们需要在src的index.js中引用挂载

import React from 'react';
import { render } from 'react-dom';
// 由于 antd 组件的默认文案是英文,所以需要修改为中文


import 'moment/locale/zh-cn';
import 'antd/dist/antd.css';
import './index.css';
import Router from './Router/index'
import Utils from './utils'
import moment from 'moment';
moment.locale('zh-cn');

React.$Utils = Utils;

render(<Router />, document.getElementById('root'));

在 home.js中使用如下

import React, { Component } from 'react';
import Header from './../../components/header'
import Footer from './../../components/footer'
class Home extends Component {
    constructor(props) {
        super(props);
        this.state = {
            data: "js是世界上最好的语言"
        };
    }
    componentDidMount() {
        console.log(React.$Utils.time.getCurrentDate(''))
    }
    render() {
        return (
            <div>
                <Header className="header" />
                <div>Home
                    <div>
                        <p>
                            {this.state.data}
                        </p>
                        <p>
                            {React.$Utils.time.getCurrentDate('')}
                        </p>


                    </div>

                </div>
                <Footer className="footer" />
            </div >
        )
    }
}
export default Home

此处需要注意的是我们要用到 react 的 Component 以及生命周期,这里不懂的小伙伴可以移步官方文档查看哦。
页面效果如下
utils工具类
这次先更新到这里,后面会更新一下store的用法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react + antdPro 从构建到运行 + 路由 + 组件 + 配置 的相关文章

  • 如何在 redux-toolkit 中正确使用 PayloadAction 和元类型?

    简化示例 import createSlice PayloadAction from reduxjs toolkit type Cake flavor string size S M L const initialState all Cak
  • 既然 Angular 是双向数据绑定,为什么我应该在 Angular 中使用 Redux?

    据我了解 Redux 主要是为了在 javascript 应用程序中启用双向数据绑定 这对于非双向数据绑定的框架非常有用 例如 React 但为什么要在 Angular 中使用它 因为它本身就是双向数据绑定的 为了说明我的问题 我在本机 A
  • 我的 rtk 切片的初始状态未按预期保存在存储中?

    目前正在学习如何将 RTK 与 typescript 结合使用 我有 2 个切片 其中一个是我使用 RTK 查询制作的以获取数据 称为apiSlice ts 另一个使用 createSlice 来处理我的待办事项应用程序的同步状态更改 称为
  • React 中模型更改 11 次后 Froala 编辑器崩溃

    我在没有身份的情况下在线构建了一个简单的编辑器 在后端实现Node JS 与 Socket IO MongoDB 以及客户端使用React连接Socket IO 为了创建编辑器 我使用了弗罗拉编辑 https www froala com
  • 监听 redux 动作

    我想创建一个可重用的 redux 表模块 它将存储和更新页码 显示的总页数等 我可以在所有页面之间共享这些模块 但是 我需要更新操作来触发刷新数据操作 该操作将根据页面到达不同的端点 因此 可能类似于页面特定的监听 RefreshData
  • 以编程方式更改 Redux-Form 字段值

    当我使用redux formv7 我发现没有办法设置字段值 现在在我的form 我有两个select成分 当第一个时 第二个的值就会很清楚select元件值改变 在类渲染中 div div site div div div div
  • React-redux useDispatch() 未捕获类型错误

    我正在尝试创建一个简单的组件来使用 React Redux 钩子分派操作useDispatch 我收到一个错误 我已将组件修剪到发生错误的位置 当调用 useDispatch 函数时会发生这种情况 import useDispatch fr
  • NGXS 状态大小和性能

    Angular 中类似于 redux 的模式给我留下了深刻的印象 并且我迷上了 NGXS 我将其与 NGRX 和 Akita 进行了比较 但选择了 NGXS 我知道 NGXS 存储应用程序中的所有先前状态 因此如果我有一个非常复杂的 UI
  • redux - 如何存储和更新键/值对

    我正在使用 redux 和 React js 我想存储简单的键 值对 但无法获得正确的减速器语法 在这种情况下 每个键 值对将保持与外部系统的连接 这是正确的做法吗 我刚开始使用 redux 所以这有点神秘 export default s
  • redux 教程:const 存储在 this.props 中

    我正在做教程 React 视频 24 https egghead io lessons javascript redux passing the store down explicitly via props https egghead i
  • Typescript:如何在 Redux 中输入 Dispatch

    例如我想删除dispatch any here export const fetchAllAssets gt dispatch any gt dispatch actionGetAllAssets return fetchAll getPr
  • 如何使用 useState 挂钩按索引更新数组?

    我有一个选择组件 我想用它来根据索引更新对象数组的值 我这样使用钩子 const areas setAreas useState product areas 这将返回以下 区域 0 de Getraenke en Drinks 1 de S
  • 理解react-hooks/exhaustive-deps useEffect和调度事件

    我有这个警告 React Hook useEffect has a missing dependency dispatch Either include it or remove the dependency array react hoo
  • 如何修复 React-Redux 应用程序中的 431 请求标头字段过大

    我正在 YouTube 上使用 Redux 完成 MERN 注册 登录身份验证教程 当尝试在 Postman 中将测试用户 POST 到服务器时 我收到 431 标头请求太大错误响应 我在一些地方读到清除浏览器中的缓存 历史记录是有效的 所
  • 如何检查令牌过期和注销用户?

    当用户单击注销按钮时 他 她可以自己注销 但是如果令牌过期 他 她就无法注销 因为在我的应用程序中 令牌在服务器端和前端都使用 当用户单击注销按钮时 如果令牌有效 则服务器和浏览器中的令牌都会被清除 当用户未注销并且他 她的令牌过期但未在浏
  • 'TypeError [ERR_INVALID_ARG_TYPE]:“path”参数必须是字符串类型。收到的类型未定义'

    我正在做一个 React 项目 遇到了一个让我困惑的问题 每当我跑步时yarn start我收到此错误 类型错误 ERR INVALID ARG TYPE 路径 参数必须是类型 细绳 收到的类型未定义 我不知道为什么会发生这种情况 要解决此
  • Redux 更新嵌套数据 [不可变更新模式]

    任何人都可以帮助解决此更新模式 我没有使用任何像 immer 这样的库 我必须更新嵌套对象 数据看起来像 dis 样本数据 isFetching false data nba stack 1 我的减速机 state isFetching f
  • 为什么 React 组件在 props 没有改变的情况下会重新渲染?

    我在 ReactJS 16 8 5 和 React Redux 3 7 2 上构建了一个应用程序 当应用程序加载应用程序安装时 将设置初始存储并针对 Firebase 实时数据库设置数据库订阅 该应用程序包含侧边栏 标题和内容部分 通过使用
  • 使用输入更新 redux 状态

    如何从文本输入更新 redux 状态 我正在尝试用文本输入做一个非常简单的 Hello World 当有人在文本输入中输入内容时 它应该更新我商店的 searchTerm 值 我无法弄清楚这些事情 1 如何获取输入的值并将其传递到其 onC
  • 处理基于操作/减速器的应用程序中多个异步调用的加载状态

    我不认为这个问题与特定的框架或库绑定 而是适用于遵循操作 减速器模式的所有基于商店的应用程序 为了清楚起见 我使用 Angular 和 ngrx 在我正在开发的应用程序中 我们需要跟踪各个资源的加载状态 我们处理其他异步请求的方式是通过这种

随机推荐

  • 惊群效应及其解决方法

    这里写目录标题 惊群效应的概念 惊群效应的解决方法 在accept之前加锁 SO REUSEPORT 惊群效应的概念 惊群现象就是多进程 多线程 在同时阻塞等待同一个事件的时候 休眠状态 如果等待的这个事件发生 那么他就会唤醒等待的所有进程
  • Python游戏开发 unit05_Pygame物体移动和边界碰撞

    一 移动的本质 物体的位置变化 其实是坐标的变化 循环一次 刷新画布 重新绘制 二 边界的碰撞反弹 左边 x lt 0 右边 x gt 窗口宽度 物体宽度 上边 y lt 0 下边 y gt 窗口高度 物体高度 三 完整代码演示 impor
  • 总结Python的几点语言特性

    总结Python的几点语言特性 Python语言简洁 优雅 扩展性强 这些特点常被Python程序员挂在嘴边 确实也都是Python的特点 要讨论语言的特点或特性 可以得到很多不同的结论 有针对语言整体而言的特性 也有针对某一个应用领域的特
  • R语言解决三门问题(ggplot可视化)

    三门问题背景介绍 三门问题 Monty Hall problem 亦称为蒙提霍尔问题 蒙特霍问题或蒙提霍尔悖论 大致出自美国的电视游戏节目Let s Make a Deal 问题名字来自该节目的主持人蒙提 霍尔 Monty Hall 参赛者
  • 德鲁克《卓有成效的管理者》学习&读书-总结

    有幸学习了管理大师德鲁克先生的 卓有成效的管理者 帮助学习者理清了在理论和实践之间建立桥梁 使其生根落地 开花结果 管理不是常识 管理是个实践学科 要不断温习 不断与领导同事联接 交流碰撞 不断的在事上练 所谓卓有成效 就是不断让优秀的习惯
  • C#基础知识点总结(八)- 集合和特殊集合

    元素个数是动态的 就应使用集合类 大多数集合接口都可在System Collections和System Collections Generie名称空间中找到 详细可见 C 集合 Collection 菜鸟教程 runoob com 1 列
  • 机器学习<降维和度量学习>-matlab代码#3

    文章目录 测试样本 K近邻学习 K nearest Neighbor 降维 MDS算法 测试数据 MDS代码 主成分分析 PCA降维 核化线性降维 核化主成分分析 KPCA 流行学习 等度量映射Isometric Mapping 流行学习
  • 光照(二):镜面反射分量,Phong模型,Blinn模型

    标准光照方程的镜面反射分量指由光源直接经物体表面反射入眼睛的光线 1 Phong模型 标题镜面反射的Phong模型 所有向量均为单位向量 n为表面法向量 v指向观察者 l指向光源 对方向光源 l为定值 r为 镜像 向量 即l对n的镜像结果
  • 一文带你掌握抓包工具的使用-科来

    本篇彭老师将图文并茂教你如何使用抓包工具 并在文章最后教大家如何偷取FTP的用户名密码 一 安装 一口君为大家介绍一个非常好用的抓包工具 科来 下载地址 http www colasoft com cn 下载完毕 双击直接下一步即可安装 二
  • 二分查找+快排

    include
  • 10 大流行软件测试工具

    作者 Alexandra Gorobets 译者 侯晓辉 策划 万佳 01 前言 本文介绍了一些测试工具 它们可以帮助我们快速 有效地交付 Tricentis 主导的一项全球调查为我们提供了几个有关测试趋势的重要观察 趋势表明 团队倾向于使
  • 面板数据处理

    这里写自定义目录标题 1 面板数据录入 2 缩尾处理 3 描述性统计 4 相关性分析 5 多重共线性检验 6 设置虚拟变量 7 多元OLS回归 8 豪斯曼检验 在对面板数据进行回归之前 要先检验这个模型用固定好还是用随机效应好 现在普遍都用
  • Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)

    目录 一 下载及安装及环境配置 1 下载及安装 2 环境变量的配置 3 检测是否安装成功 4 配置Maven 1 更换本地仓库 2 配置镜像 二 集成eclipse完成案例 1 eclipse前期配置Maven 2 创建Maven工程 一
  • 二极管

    二极管 转载于 https www cnblogs com kexi p 10922119 html
  • 基于Lua的冒泡排序算法实现

    冒泡排序核心 比较相邻的元素 如果第一个比第二个大 就交换他们两个 对每一对相邻元素作同样的工作 从开始第一对到结尾的最后一对 这步做完后 最后的元素会是最大的数 针对所有的元素重复以上的步骤 除了最后一个 持续每次对越来越少的元素重复上面
  • win10安装ZED Python API以及解决python get_python_api.py报错

    Python 安装脚本位于 C Program Files x86 ZED SDK 中 运行如下命令 cd C Program Files x86 ZED SDK python get python api py 此时若出现如下报错 解决方
  • npm安装模块的 npm WARN root@1.0.0 No description 和 npm WARN root@1.0.0 No repository filed 的解决方法

    报错分析 是因为系统在给你配置package json文件的时候并没有帮你设置description字段和存储库字段 需要我们自己手动设置 直接用vim打开这个文件编辑 e 如图设置 description字段的内容无所谓 不为空即可 第二
  • c++ 构造函数、析构函数、拷贝构造函数、虚函数、纯虚函数

    今天主要讲拷贝构造函数 给构造函数 析构函数 虚函数 纯虚函数留个坑 拷贝构造函数 注意事项 1 如果类中有全局堆变量 那么就要考虑是否重写拷贝函数 因为默认的拷贝函数只是简单的赋值 会导致多个实例的堆变量共用同一个堆空间 class A
  • JS中的正则表达式

    正则 什么是正则 正则的常用方法 正则的元字符 普通元字符 边界元字符 正则的限定元字符 特殊元字符 重复元字符 正则的标识符 修饰符 正则表达式的捕获 正则的两大特性 什么是正则 正则就是一种规则的的表达式 书写一段规则 用于匹配一段字符
  • react + antdPro 从构建到运行 + 路由 + 组件 + 配置

    不定期更新 好久没用了 这次自己重新熟悉下 有不对的地方或错误 希望大家多指正 快速构建 使用 create react app 快速构建 React 开发环境 cnpm install g create react app create