react-vite-antd环境下新建项目

vite 创建一个react项目

  • 1. 安装vite并创建一个react项目
      • 1. 我使用的 yarn安装,基本配置项目名字, 框架react ,js
      • 2. cd vite-react进入项目目录安装node包并启动项目
  • 2. 安装引入Ant Design
    • 引入依赖(我用的yarn,没有安装的也可以使用npm,根据自己情况选择)
    • 使用启动命令:yarn run dev 或者npm run dev
    • 清除App.jsx默认内容并引入antd
      • 1. 清空App.css和index.css文件中内容
      • 2. 修改App.jsx中内容
      • 3. 页面显示:
  • 3. 引入布局和菜单栏
    • 1. 引入布局组件
      • 1. 代码
      • 报错:`Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/antd.js?v=d0b75d53' does not provide an export named 'Header' (at App.jsx:3:36)`
      • 运行后发现多了默认样式外边距,修改默认样式
    • 2. 引入左侧菜单栏组件
      • ✏️ 1. 代码(手写代码在最后)
      • 📖 2. 运行后,点击按钮没反应
        • 报错:warning.js:19 Warning: [antd: Menu] `inlineCollapsed` not control Menu under
        • 📖 重新运行
      • 3. 调整布局样式
        • ✏️ 1. 新建src/views/index.jsx。把原来App.jsx文件内容转移到新建的src/views/index.jsx中, 对App修改如下。`注意引入jsx文件名字要大写`
        • 📖 2. 运行后样式
  • 4. 添加动态路由设置
    • 1. 集中react-router对比
      • * React-Router:
      • * React-Router-DOM:
      • * Reach Router:
    • 2. 三种路由模式:HashRouter、BrowserRouter 和 MemoryRouter 都是 React Router 提供的路由组件
    • 2. 安装/使用 React-Router-DOM
      • * 安装/引用:
      • * 在导航组件中使用。 也可以新建routerAdmin.jsx作为管理router文件
        • 动态路由完整代码
          • ✏️ 1. router文件
          • ✏️ 2. App.jsx代码
          • 📖 3.运行后页面效果
        • 开发中报错:warning.js:19 Warning: [antd: Menu] `children` will be removed in next major version. Please use `items` instead.
        • 开发中报错:index.jsx:14 Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/react-router-dom.js?v=e8aea50f' does not provide an export named 'useHistory'
        • 开发报错:TypeError: Cannot destructure property 'basename' of 'React.useContext(...)'
        • 开发踩坑: 配置好之后路由更新了,页面没有更新。
        • 开发踩坑: react使用antd中刷新页面时候 ,布局有闪烁,查找发现使用Sider标签加载页面会有闪烁

1. 安装vite并创建一个react项目

使用 NPM:

npm create vite@latest

使用 Yarn:

 yarn create vite

使用 PNPM:

 pnpm create vite

1. 我使用的 yarn安装,基本配置项目名字, 框架react ,js

在这里插入图片描述

2. cd vite-react进入项目目录安装node包并启动项目

 yarn add install

加载之后使用启动命令yarn run dev
在这里插入图片描述
在这里插入图片描述

2. 安装引入Ant Design

  • 引入依赖(我用的yarn,没有安装的也可以使用npm,根据自己情况选择)

使用 npm:

 yarn add antd

使用 yarn:

npm install antd --save

安装完成:
在这里插入图片描述

  • 使用启动命令:yarn run dev 或者npm run dev

在这里插入图片描述
在这里插入图片描述

import { Button } from 'antd';
function App() {
  return (
    <>
        <Button type="primary">Button</Button>
    </>
  )
}
export default App

3. 页面显示:

在这里插入图片描述

3. 引入布局和菜单栏

在这里插入图片描述

1. 引入布局组件

1. 代码

import React, { useState } from 'react';
import './App.css'
import { Button,Sider,Layout,Header,Space } from 'antd';
const headerStyle = {
  textAlign: 'letft',
  color: '#fff',
  height: 64,
  paddingInline: 10,
  lineHeight: '64px',
  backgroundColor: '#7dbcea',
};
const contentStyle = {
  textAlign: 'center',
  minHeight: 120,
  lineHeight: '120px',
  color: '#fff',
  backgroundColor: '#108ee9',
};
const siderStyle = {
  textAlign: 'center',
  lineHeight: '120px',
  color: '#fff',
  backgroundColor: '#3ba0e9',
};
const App = () => {
  return (
      <Layout>
      <Sider style={siderStyle}>
      </Sider>
      <Layout>
        <Header style={headerStyle}>
        </Header>
        <Content style={contentStyle}>Content</Content>
      
      </Layout>
    </Layout>
  );
};
export default App;

报错:Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/antd.js?v=d0b75d53' does not provide an export named 'Header' (at App.jsx:3:36)

是因为引入方式不对:修改成就可以了,官网有我没注意

import { Button, Layout, Space } from 'antd';
const { Header, Sider, Content } = Layout;

运行后发现多了默认样式外边距,修改默认样式

在这里插入图片描述
使用在App.css中添加下面代码,就解决了。

/* 更改默认样式 */
body {
    margin: 0;
}

在这里插入图片描述

2. 引入左侧菜单栏组件

✏️ 1. 代码(手写代码在最后)

在这里插入图片描述
在这里插入图片描述

📖 2. 运行后,点击按钮没反应

在这里插入图片描述

报错:warning.js:19 Warning: [antd: Menu] inlineCollapsed not control Menu under

是因为位置设置错误,在Sider标签上添加collapsed={collapsed}就可以了
![在这里插入图片描述](https://img-blog.csdnimg.cn/15149d6dbab145ba9a4c82209e7d46
d6.png)

📖 重新运行

在这里插入图片描述

在这里插入图片描述

3. 调整布局样式

✏️ 1. 新建src/views/index.jsx。把原来App.jsx文件内容转移到新建的src/views/index.jsx中, 对App修改如下。注意引入jsx文件名字要大写

在这里插入图片描述

📖 2. 运行后样式

在这里插入图片描述

4. 添加动态路由设置

1. 集中react-router对比

* React-Router:

是一个通用的路由库,适用于不同平台的 React 应用。 提供了一些router的核心API,包括Router, Route,
Switch等,但是它没有提供 DOM 操作进行跳转的API。

* React-Router-DOM:

而 React Router DOM 是 React Router 的 Web 版本,提供了与浏览器环境相关的路由组件和功能。 提供了
BrowserRouter,HashRouter , Route, Link等 API,可以直接操作DOM 的事件控制路由。如点击按钮。
React Router DOM 是在 React Router 基础上构建的,用于在 Web 应用中处理路由。它提供了与浏览器 URL
相关的功能,如基于浏览器历史记录的导航等。

* Reach Router:

它提供了类似于 React Router 的功能,但具有更简单的 API 和更好的可访问性支持。

2. 三种路由模式:HashRouter、BrowserRouter 和 MemoryRouter 都是 React Router 提供的路由组件

  1. HashRouter组件:路径上有"#",
    它使用 URL 的哈希部分(#)来管理路由。在使用 HashRouter 时,URL 中的哈希部分将被用作路由路径,不会触发浏览器的页面刷新。这种方式适用于静态网站或需要在不同环境中部署的应用。

  2. BrowserRouter组件:路径上没有"#"
    它使用 HTML5 的 History API 来管理路由。

  3. MemoryRouter:
    它将路由信息存储在内存中,而不是 URL 中。MemoryRouter 适用于在内存中管理路由状态,例如在测试环境中进行单元测试或在非浏览器环境中使用 React Router。

2. 安装/使用 React-Router-DOM

文档:React-Router官方文档可参考

* 安装/引用:

  1. 安装:yarn add react-router-dom
    在这里插入图片描述

  2. 引用:import { BrowserRouter, Route, Link } from 'react-router-dom';

在这里插入图片描述

* 在导航组件中使用。 也可以新建routerAdmin.jsx作为管理router文件

动态路由完整代码

✏️ 1. router文件

在这里插入图片描述

✏️ 2. App.jsx代码
import React, { useState } from 'react';

///---引入ui-组件库
import { Button, Menu, Layout } from 'antd';
import {
  MenuFoldOutlined,
  MenuUnfoldOutlined,
} from '@ant-design/icons';
///---引入路由组件
import { Routes, Route, BrowserRouter } from 'react-router-dom';
import myRouter from './router/index'

const App = () => {
  ///---页面逻辑
  const { Header, Sider, Content } = Layout;

 // --- 左侧导航栏显示隐藏逻辑
  const [collapsed, setCollapsed] = useState(false);
  const toggleCollapsed = () => {
    setCollapsed(!collapsed);
  };
  return (
    <BrowserRouter>
      <Layout hasSider={true}>
        <Sider style={{
          textAlign: 'center',
          color: '#333',
          backgroundColor: '#fff',
        }} collapsed={collapsed} >
          <Menu
            mode="inline"
            items={myRouter}
            defaultSelectedKeys={['/purchase']} //默认选中key
            onClick={(e) => {
              console.log(e)
            }}
            style={{ height: '100%', }}
          >
          </Menu>
        </Sider>
        <Layout>
          <Header style={{
            textAlign: 'letft',
            color: '#fff',
            height: 50,
            paddingInline: 10,
            lineHeight: '50px',
            backgroundColor: '#fff',
          }}>
            <Button
              type="primary"
              onClick={toggleCollapsed}
              style={{
                marginBottom: 16,
              }}
            >
              {collapsed ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
            </Button>
          </Header>
          <Content style={{
            height: '100vh',
            textAlign: 'center',
            lineHeight: '120px',
            backgroundColor: '#fff',
            borderBottom: '1px solid #333'
          }}>
            <Routes>
              <Route exact path="/" element={<Purchase />} />
              <Route exact path="/purchase" element={<Purchase />} />
              <Route exact path="/inventory" element={<Inventory />} />
              <Route exact path="/roles" element={<RoleList />} />
              <Route exact path="/roles/new" element={<NewRole />} />
              <Route exact path="/settings/theme" element={<ThemeSettings />} />
            </Routes>

          </Content>

        </Layout>
      </Layout>
    </BrowserRouter>
  );
};

const Purchase = () => {
  return <h1>Purchase Page</h1>;
};

const Inventory = () => {
  return <h1>Inventory Page</h1>;
};

const RoleList = () => {
  return <h1>Role List Page</h1>;
};

const NewRole = () => {
  return <h1>New Role Page</h1>;
};

const ThemeSettings = () => {
  return <h1>Theme Settings Page</h1>;
};
export default App;
📖 3.运行后页面效果

react-vite-antd环境下新建项目之菜单栏和导航使

开发中报错:warning.js:19 Warning: [antd: Menu] children will be removed in next major version. Please use items instead.

Ant Design 的 Menu 组件的 children 属性将在下一个主要版本中被移除。这意味着在未来的版本中,你应该使用 items 属性来传递菜单项,而不是直接使用 Menu.Item 组件作为 Menu 组件的子元素。
如下新版本中使用时不对的:
在这里插入图片描述
修改成如下:

 <Menu
  mode="inline"
  theme="dark"
  items={items}
  onClick={onClick}
  defaultSelectedKeys={['1']}
  defaultOpenKeys={['sub1']}
  >
</Menu>

开发中报错:index.jsx:14 Uncaught SyntaxError: The requested module ‘/node_modules/.vite/deps/react-router-dom.js?v=e8aea50f’ does not provide an export named ‘useHistory’

  1. 没有使用最新版本的“react-router-dom”模块,npm升级模块:npm update react-router-dom。
  2. 当如方法不对,应该是“import { useHistory } from ‘react-router-dom’”。
  3. 如果以上两种方式都无法解决问题,可以尝试删除“node_modules”文件夹,并重新安装
  4. 如果上述方法都不能解决问题,你可以使用其他版本的“react-router-dom”模块,或者尝试使用其他的路由模块。

开发报错:TypeError: Cannot destructure property ‘basename’ of ‘React.useContext(…)’

是因为link标签没有被BrowserRouter标签包裹

  <BrowserRouter>
///此处写link逻辑就可以了
</BrowserRouter>

开发踩坑: 配置好之后路由更新了,页面没有更新。

发现是Route属性使用错误了, <Route exact path=“/” element={} />,我把element使用成component了,改了就可以了,

开发踩坑: react使用antd中刷新页面时候 ,布局有闪烁,查找发现使用Sider标签加载页面会有闪烁

是由于 Sider 组件的初始状态导致的。Sider 组件默认是收起状态,当它在页面加载时展开时,可能会导致页面内容重新布局,从而引起闪烁。官网又给出Layout 标签属性hasSider
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第三阶段】kotlin语言的可空性

1.kotlin语言默认是不可空类型&#xff0c;不能随意给null fun main() {var name:String"kotlin"namenull }执行结果 报错&#xff1a; Null can not be a value of a non-null type String2.声明可空类型 &#xff1f; fun main() {var name:String ?namenull…

虚拟化和容器化

目录 一. 虚拟化和容器化的概念 什么是虚拟化、容器化 案例 为什么要虚拟化、容器化&#xff1f; 二. 虚拟化实现方式 应用程序执行环境分层 虚拟化常见类别 虚拟机 容器 JVM 之类的虚拟机 三. 常见虚拟化实现 主机虚拟化(虚拟机)实现 容器虚拟化实现 容器虚拟化实现原理 容器…

kafka的位移

文章目录 概要消费位移__consumer_offsets主题位移提交 概要 本文主要总结kafka的位移是如何管理的&#xff0c;在broker端如何通过命令行查看到位移信息&#xff0c;并从代码层面总结了位移的提交方式。 消费位移 对于 Kafka 中的分区而言&#xff0c;它的每条消息都有唯一…

【科研论文配图绘制】task1 掌握科研绘图的基本知识

【科研论文配图绘制】task1 掌握科研绘图的基本知识 写在最前 8月份Datawhale组队学习&#xff0c;写下该博客记录学习内容 1.科研论文配图的分类与构成 2.科研论文配图的格式和尺寸 3.科研论文配图中的字体和字号设置 4.科研论文配图的版式设计、结构布局和颜色搭配 占个…

Postman接口自动化测试实战,从0到1一篇彻底打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 postman中的测试 …

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API&#xff0c;可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…

2022年3月全国计算机等级考试真题(二级C语言)

2022年3月全国计算机等级考试真题&#xff08;二级C语言&#xff09; 第1题 下列有关栈论述正确的是&#xff08; &#xff09; A. 栈顶元素最先能被删除 B. 栈顶元素最后才被删除 C. 栈底元素永远不能被删除 D. 以上三种说法都不对 正确答案&#xff1a;A 得 0 / 1 分 第2题…

【C# 基础精讲】异常的类型和处理方法

异常&#xff08;Exception&#xff09;是在程序执行过程中发生的意外或异常情况&#xff0c;例如除零错误、空引用访问、文件不存在等。在C#及其他编程语言中&#xff0c;异常处理是一种重要的机制&#xff0c;用于捕获和处理程序运行时可能出现的错误&#xff0c;以保证程序的…

考研 408 | 【计算机网络】 应用层

导图 网络应用模型 客户/服务器&#xff08;c/s&#xff09;模型 P2P模型 DNS 域名 域名服务器 域名解析过程 文件传输协议FTP FTP服务器和用户端 FTP工作原理 电子邮件 电子邮件的信息格式 组成结构 邮件服务器的功能&#xff1a; 1.发送&接收邮件 2.给发件人报告邮…

vue基础知识三:v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&#…

数据结构--最短路径 Floyd算法

数据结构–最短路径 Floyd算法 F l o y d 算法&#xff1a;求出每⼀对顶点之间的最短路径 \color{red}Floyd算法&#xff1a;求出每⼀对顶点之间的最短路径 Floyd算法&#xff1a;求出每⼀对顶点之间的最短路径 使⽤动态规划思想&#xff0c;将问题的求解分为多个阶段 对于n个顶…

视频汇聚平台EasyCVR视频监控播放平台WebRTC流地址无法播放的问题解决方案

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

NRF24L01+数据手册_关于几种工作模式

使用的是官方数据手册的章节编号&#xff0c;原文截图方便对照&#xff0c;部分翻译&#xff08;标蓝&#xff09;、个人理解&#xff08;标紫&#xff09;&#xff0c;关键信息&#xff08;标红&#xff09;。 6.1 Operational Modes操作模式 6.1.1 State diagram状态机图 6…

Android Socket使用TCP协议实现手机投屏

本节主要通过实战来了解Socket在TCP/IP协议中充当的是一个什么角色&#xff0c;有什么作用。通过Socket使用TCP协议实现局域网内手机A充当服务端&#xff0c;手机B充当客户端&#xff0c;手机B连接手机A&#xff0c;手机A获取屏幕数据转化为Bitmap&#xff0c;通过Socket传递个…

校园外卖小程序怎么做

校园外卖小程序是为满足校园内学生和教职员工的外卖需求而开发的一种应用程序。它涵盖了从用户端、商家端、骑手端、电脑管理员到小票打印、多商户入驻等多个方面的功能&#xff0c;以下将逐一介绍。 1. 用户端功能&#xff1a;校园外卖小程序为用户提供了便捷的订餐和外卖服务…

21.0 CSS 介绍

1. CSS层叠样式表 1.1 CSS简介 CSS(层叠样式表): 是一种用于描述网页上元素外观和布局的样式标记语言. 它可以与HTML结合使用, 通过为HTML元素添加样式来改变其外观. CSS使用选择器来选择需要应用样式的元素, 并使用属性-值对来定义这些样式.1.2 CSS版本 CSS有多个版本, 每个…

《测试设计思想》——图书推荐

前言&#xff1a; 在当今软件行业飞速发展的时代&#xff0c;软件测试的重要性日益凸显。为了帮助读者提高测试效率和测试质量&#xff0c;清华大学出版社推出了一本名为《测试设计思想》的书籍&#xff0c;由知名专家周海旭老师撰写。这本书深入探讨了测试设计的思想和方法&am…

easyx图形库基础:3实现弹球小游戏

实现弹球小游戏 一.实现弹球小游戏:1.初始化布&#xff1a;2.初始化一个球的信息&#xff1a;3.球的移动和碰撞反弹4.底边挡板的绘制和移动碰撞重置数据。 二.整体代码&#xff1a; 一.实现弹球小游戏: 1.初始化布&#xff1a; int main() {initgraph(800, 600);setorigin(40…

P16 电路定理——巧妙-灵性-智慧

1、诺顿定理的证明 诺顿定理的证明&#xff0c; 回忆戴维南定理的证明是&#xff0c;在a,b两端加上一个电流源&#xff0c;再根据叠加定理&#xff0c;就解电压Uab。 对偶原理&#xff1a; 在a,b两端加上一个电压源u&#xff0c;再根据叠加定理求A中的独立源作用是给到a&#x…

【爬虫】P1 对目标网站的背景调研(robot.txt,advanced_search,builtwith,whois)

对目标网站的背景调研 检查 robot.txt估算网站大小识别网站所用技术寻找网站的所有者 检查 robot.txt 目的&#xff1a; 大多数的网站都会包含 robot.txt 文件。该文件用于指出使用爬虫爬取网站时有哪些限制。而我们通过读 robot.txt 文件&#xff0c;亦可以最小化爬虫被封禁的…