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 从构建到运行 + 路由 + 组件 + 配置 的相关文章

  • 类型错误:无法在反应中读取 null 的属性“名称”

    我对 React 和 Redux 很陌生 所以在做了大量研究后我无法轻松解决这个错误 我试图以卡片的形式在单独的页面中显示用户的个人资料 但出现错误 TypeError Cannot read property name of null P
  • React-ReduxReducers 中 Spread 语法的用途

    我试图理解扩展运算符的目的 根据我从文档中了解到的 扩展语法会复制现有对象 并在传入新对象时被覆盖 在下面的代码中 export default function reducer state user fetching false fetc
  • 如何访问 React Redux 中的存储状态?

    我只是在制作一个简单的应用程序来学习异步与 redux 我已经让一切正常工作 现在我只想在网页上显示实际状态 现在 我如何在渲染方法中实际访问商店的状态 这是我的代码 所有内容都在一页中 因为我刚刚学习 const initialState
  • Redux actions/reducers 与直接设置状态

    我是 Redux 新手 我无法理解操作和减速器与直接修改存储的组件的价值 在 Redux 中 您的 React 组件不会直接更改存储 相反 他们发送一个动作 有点像发布一条消息 然后 reducer 处理该操作 有点像消息订阅者 并更改状态
  • React Redux:如何处理 RTK 查询/突变打字稿中的错误?

    我正在使用带有 RTK 突变的 Typescript 一切正常 但如果我以特定 JSON 格式从后端发送任何错误 例如 status Error message Something went wrong 当我检查浏览器网络选项卡时 它会向我
  • 将参数传递给mapDispatchToProps()

    我不能撒谎 我对 React Redux 有点困惑 我认为很多操作都需要参数 例如从商店中删除项目 但即使我仍在阅读如何以这种方式从组件分派来传递参数 现在大约 2 小时 我没有得到任何答案 我被尝试过this props dispatch
  • React/redux - 将 actionCreators 传递到多个深度级别

    我想知道其他人如何处理将 redux 动作创建者从智能顶级组件传递到许多较低级别的哑组件而不膨胀其 props 定义 例如 以下这个关于 redux 的优秀教程 http teropa info blog 2015 09 10 full s
  • 应用 API 响应转换的最佳位置 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在异步操作创建器中 我从服务器获取数据 对于我的用例来说 数据的格式不太好 我需要对其进行转换以在 UI 中使用它 问题 我应该 在数据到达后立
  • 使用 Redux 获取数据时如何避免竞争条件?

    我们有一个异步获取对象的操作 我们称之为getPostDetails 它需要一个参数来获取哪个帖子 一个 ID 用户会看到一个帖子列表 可以单击其中一个来获取一些详细信息 如果用户点击 Post 1 我们会发送一个GET POST动作可能看
  • 在 React 中的按键上应用按钮“活动”样式

    我在 React Redux 中有一个鼓应用程序 它的功能齐全 但我希望能够在相应的按键按下时应用活动按钮样式 就像我物理单击按钮时一样 就目前情况而言 单击按钮会进行转换 但键入相应的键只会播放音频文件 而不会真正链接到按钮 有没有办法在
  • 键入错误“模块的默认导出具有或正在使用私有名称” - 从 typescript v1.8 切换到 2

    我已将我的 ionic 应用程序从 beta 11 更新到 rc0 所以这意味着我已经从 Angular2 RC4 切换到 Angular2 stable 从 TypeScript 1 8 切换到 2 我有一个 redux 架构并且正在使用
  • 当存储状态更改时,React 组件不会更新

    下面是我的组件类 该组件似乎永远不会执行 componentWillUpdate 即使我可以在 mapStateToProps 返回之前通过日志记录看到状态更新 状态 100 发生变化 但组件不刷新 import React Compone
  • 将服务器端渲染添加到 create-react-app

    我正在研究 create react app 和 SSR 我在这个 repo 中添加了 redux 和 react router gt https github com sarovin StarteKit https github com
  • 使用 redux-persist 保存和检索状态 - React Native

    我是反应原生的新手 我第一次尝试保存我的应用程序的状态 为了实现这一目标 我建议使用还原 持久化 https github com rt2zz redux persist blob master docs recipes md 我希望在网络
  • Redux Toolkit RTK Query 发送查询参数

    如何使用 Redux Toolkit RTK 查询将查询参数传递到 api import createApi fetchBaseQuery from reduxjs toolkit query react const baseUrl xxx
  • 为什么express服务器接收到的前端数据是未定义的?

    我目前正在开发社交媒体 Mern Stack React 应用程序 我使用 Node js 和 Express 作为我的后端服务 还使用 mongoose 来存储我的数据 并使用 axios 和 redux thunk 将后端连接到前端 到
  • Flutter Redux 和 Hook。如何像react一样观察useEffect内部变量实例的变化?

    我是 flutter 新手 试图观察像 React Native 这样处于减速器状态的变量 count 我使我的 redux 和 hook 工作完美 屏幕上的变量计数发生变化 但如果我更改操作 则永远不会再次调用 useEffect 仅一次
  • Redux 中的排队操作

    我目前遇到的情况是我需要连续运行 Redux Actions 我看过各种中间件 比如 redux promise 看起来不错如果您知道触发根操作 由于缺乏更好的术语 时的连续操作是什么 本质上 我想维护一个可以随时添加的操作队列 每个对象在
  • DevSettings.reload() 用于 React Native 中的注销

    问题 我正在将混合应用程序的注销功能从本机迁移到反应本机 要求 它可以在生产环境和设备上运行 它导航到应用程序的根屏幕 登录屏幕 它清除 redux 存储 很高兴有 它会取消任何飞行中的请求 最初 我们计划做这样的事情 如何重置 redux
  • 以编程方式更改 Redux-Form 字段值

    当我使用redux formv7 我发现没有办法设置字段值 现在在我的form 我有两个select成分 当第一个时 第二个的值就会很清楚select元件值改变 在类渲染中 div div site div div div div

随机推荐

  • 惊群效应及其解决方法

    这里写目录标题 惊群效应的概念 惊群效应的解决方法 在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