首页 > 其他分享 >使用vite创建react项目并进行初始化(仓库、路由、封装)

使用vite创建react项目并进行初始化(仓库、路由、封装)

时间:2024-07-27 21:27:33浏览次数:14  
标签:npm const js react export vite import 路由

前言

学的时候都是跟着教程进行创建,后面发现自己写项目的时候记不住需要做什么,所以现在写一篇来给自己总结一下。(后面忘了也不用翻视频了,直接照着抄答案)

只写流程,没有理论。

这是我写的习惯,只具备一定通用性,有需要可参考。

创建项目

npm create vite@latest HireSphere
npm install 
npm run dev

HireShere是我的项目名,首先用它快速创建,然后选择js(这次用的是js)。

刚开始src下面会有很多东西,不管,全部删掉,只要留下这几个就行。(还有assets文件夹)

后续所有创建都是在src文件夹下。

路由

npm install react-router-dom

首先npm进行下载,然后新建router文件夹和router.jsx。

这里用的是Browserhistory,就是没有#的那个。

import { createBrowserRouter, Navigate } from 'react-router-dom'
import Login from '../pages/Login'
const routers = [
    {
        path: '/',
        element: <Navigate to="/login" replace />
    },
    {
        path: '/login',
        element: <Login />
    },
    {
        path: '/home',
        element: <div>home</div>
    }
]

export default createBrowserRouter(routers)

大部分的项目都是有登录页的,就直接用/login测试了。加了一个如果是'/'就自动重定向到/login。

element这里组件名字需要大写字母开头。

当然直接/home这种测试也没问题。

然后就是在app.jsx进行引入。

import './App.css'
import routers from './router'
import { RouterProvider } from 'react-router-dom'
function App() {

  return (
      <RouterProvider router={routers}></RouterProvider>
  )
}

export default App

这样路由就解决了。

apis

现在的项目一般都是将api放在一个文件,基本都是会对axios进行封装的。

npm install axios

新建一个api文件夹和api.js、utils.js

在util.js下

//utils.js
import axios from "axios"
axios.defaults.baseURL='http://127.0.0.1'
const axiosInstance = axios.create({
    timeout: 5 * 1000, // 请求超时时间(5秒)
    retry: 0, //全局重试次数
    retryDelay: 1000 //全局重试间隔
})

export const request = (options) => {
    return new Promise((resolve, reject) => {
        axiosInstance(options)
            .then((response) => resolve(response.data))
            .catch((error) => reject(error))
    })
}

然后在api.js下引入就好

//api.js
import { request } from "./utils";
export const login = (data) => {
    return request({
        url: '/login',
        params: data,
        method:'GET'
    })
}

仓库

npm install @reduxjs/toolkit
npm install react-redux

创建store文件夹,index.js和reducers文件夹。大概就是这种结构。

在user.js中写下面内容(大部分项目都是需要token的,就用token和id举例子)。

import { createSlice } from "@reduxjs/toolkit";
const UserSlice=createSlice({
    name:'user',
    initialState:{
        id:'',
        token:''
    },
    reducers:{
        changeId:(state,action)=>{
            state.id=action.payload
        },
        changeToken:(state,action)=>{
            state.token=action.payload
            localStorage.setItem('token',action.payload)
        }
    }
})
export const {changeId,changeToken}=UserSlice.actions
export default UserSlice.reducer

然后在index.js中导出。

import { configureStore } from "@reduxjs/toolkit";
import UserReducer from './reducers/user'
export default configureStore({
    reducer:{
        UserReducer
    }
})

接着在main.jsx导入。

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
import './index.css'
import { Provider } from 'react-redux'
import store from './store/index.js'
ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>

  </React.StrictMode>,
)

如何使用这些数据呢?这里举个例子,还是用登录页。

import { useSelector, useDispatch } from "react-redux"
import { changeId } from '../../store/reducers/user';//方法
//登录页
const Login = () => {
    const id = useSelector(state => state.user.id)
    const dispatch = useDispatch();
    dispatch(changeId(123));//修改
    console.log(id)
    return (
        <div>
            这个是Login
        </div>
    )
}
export default Login

创建其他文件夹

最基本的大框架已经是搭建好了,剩下大家各自发挥了,都是创建文件夹的事情。

这个是我的个人习惯。

标签:npm,const,js,react,export,vite,import,路由
From: https://blog.csdn.net/m0_73459939/article/details/140699536

相关文章

  • 静态路由综合实验
    拓扑图实验需求在这里插入图片描述1、整张网络使用192.168.1.0/24网段进行划分2、R1、R2、R3、R4均有两个环回来模拟用户网段3、R5使用DHCP为PC分配IP地址4、R2、R3、R4、R5开启Telnet功能;账号密码:admin/admin;并且使用R1进行Telnet测试登录其他设备5.完成所有路由......
  • vite5-macos仿macOS网页osx管理系统|vue3+arcoDesign桌面os
    基于vite5.x+vue3+arco-design原创自研网页版os管理框架ViteWebOS。使用最新前端技术vite5+vue3+pinia2+arcoDesign+sortablejs+echarts搭建网页pc版桌面os式后台管理系统解决方案。支持自定义桌面栅格布局引擎、可拖拽桌面图标、多屏分页管理、自定义桌面壁纸主题、毛玻......
  • 如何在 Litestar GET 路由中使用 Pydantic 模型作为查询参数
    我正在尝试使用Litestar创建一条GET路由,该路由利用Pydantic模型作为查询参数。但是,序列化无法按预期工作。这是重现我的问题的最小示例:frompydanticimportBaseModelfromlitestarimportLitestar,get,ControllerclassInput(BaseModel):foo:str......
  • 后端说,单页面SPA和前端路由是怎么回事
    没有请求的路由在传统开发中,浏览器点击一个超链接,就会像后端web服务器发送一个html文档请求,然后页面刷新。但开始单页面开发后,就完全不同了。单页面?这个概念难以理解。我用一个js作为整个web应用,然后再这个js中操作dom变化,以此来实现页面变化。这不叫单页面吗?这叫!但不完善,因为这......
  • 构建一个具有深色模式的简单React Web应用
    在当今的Web开发世界里,创建一个既美观又功能丰富的用户界面是至关重要的。在本文中,我们将探讨如何使用React构建一个简单但功能强大的Web应用,它包含导航栏、内容展示区域和深色模式切换功能。项目概述我们的目标是创建一个具有以下特性的Web应用:左侧导航栏,包含四个......
  • 颜色选择器react-color
    配合表单使用的颜色选择器:https://www.jianshu.com/p/b7bc59146058,原文reacthooks版本的,我改成的class函数版本的。  1.安装:npminstallreact-color--save  2.封装:colorPicker.js importReact,{FC}from'react';import{SketchPicker}from'react-color'......
  • React18学习笔记 第六篇:对React内部运作深入了解
    Part1组件之间的概念差异·组件组件是我们为了描述用户界面的一部分而编写的,它只是一个普通的JavaScript函数,但它是一个返回React式元素的函数,这些元素是用JSX语法来编写的,我们可以把组件理解为一个“蓝图”或“模板”。·组件实例一个组件实例就像是一个组件的实际物理表......
  • 前端路由快速上手-React-Router
    1.前端路由简介前端路由是一种在单页面应用(SPA)中实现页面跳转的技术,它允许我们通过改变URL地址而无需重新加载页面来显示不同的内容。在前端路由中,每个路径(path)都对应一个组件(component),当访问特定的路径时,对应的组件就会在页面上渲染。2.创建路由开发环境要开始使用Rea......
  • 使用React脚手架时npx速度慢的问题解决
    React作为目前最流行的前端框架之一,其开发效率和组件化特性受到了开发者的广泛欢迎。然而在使用React脚手架工具,如create-react-app进行项目初始化时,有时会遇到npx命令执行速度非常慢的问题。本文将探讨这一问题的原因,并提供一些有效的解决方案。问题分析npx是Node.js包管......
  • BGP(Border Gateway Protocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为
    BGP(BorderGatewayProtocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为。BGP是互联网上用来交换路由信息的主要协议之一,它负责决定网络数据包应该如何从一个网络路由到另一个网络。BGP劫持可以分为两种主要类型:前缀劫持(PrefixHijacking):在前缀劫持中,攻击者发送......