搭建react项目简易框架
在公司实习的时候前端技术用的是react,但是我之前并没有系统的学习过这门技术,公司又有封装好的框架,所以心血来潮自己弄
个框架以便以后些项目用的到。
- 安装并创建项目
1 2 | npm install -g create-react-app create-react-app projectname |
创建完项目以后使用react官方推荐的组件库 (详细使用可以参考官网:在 create-react-app 中使用 - Ant Design,这里我用到的导航菜单组件)
1 | npm install antd --save |
再App.js中放入显示的容器,为了方便,我将App.js当作根组件使用了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import "./App.css" ; import { Layout, Menu } from "antd" ; import React from "react" ; import { Link, Outlet, Navigate } from "react-router-dom" ; import { AppstoreOutlined } from "@ant-design/icons" ; const { Header, Sider, Content } = Layout; function App() { const items = [ { key: "sub1" , label: "Navigation Two" , icon: <AppstoreOutlined />, children: [ { key: "3" , label: <Link to={ "/home" }>Home</Link>, }, { key: "4" , label: <Link to={ "/about" }>About</Link>, }, ], }, ]; return ( <Layout style={{ height: "100%" , width: "100%" }}> <Header>Header</Header> <Layout> <Sider style={{ overflow: "auto" }}> <Menu theme= "dark" defaultSelectedKeys={[ "1" ]} defaultOpenKeys={[ "sub1" ]} mode= "inline" items={items} /> </Sider> <Content> <Outlet></Outlet> <Navigate to= "/home" replace={ true } /> </Content> </Layout> </Layout> ); } export default App; |
- 配置路由表
安装路由依赖
1 | npm i react-router-dom |
然后在文件目录下新建route文件夹
1、在路由文件index.js下引入Reater Router中的两个组件createBrowserRouter和RouterProvider(其中,createBrowserRouter函数是
用于创建一个浏览器路由器对象,用来配置应用中的路由;RouterProvider则是一个组件,它主要是将创建的路由器对象提供个整个应用)
2、使用createBrowserRouter创建router实例对象并且配置路由对应关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //router中使用createBrowserRouter创建浏览器路由对象router,配置好各页面路径 import { createBrowserRouter } from "react-router-dom" ; import Home from "../home/home" ; import About from "../about/about" ; import App from "../../App" ; const router = createBrowserRouter([ { path: "/" , element: <App />, redirect: "/home" , children: [ { path: "/home" , element: <Home />, }, { path: "/about" , element: <About />, }, ], }, ]); export default router; |
配置好路由表后在index.js中 引入路由并使用RouterProvider注册路由,绑定路由router实例
这样路由就配置好了,如果你想做管理系统这一类型的项目,就去要使用嵌套路由的方式以及一个路由占位符,这里就不赘述了,可参考博客:React-Router路由基础篇(简单易学)-CSDN博客
配置持久化管理仓库(参考:React中的Redux状态管理使用_reac页面 使用redux的state-CSDN博客)
1 2 | npm i react-redux npm i @reduxjs/toolkit |
通常集中状态管理的部分都会单独创建一个'store'目录,而应用通常会有很多个子模块,所以创建一个'modules'目录,在内部编写业务分类的子store,store入口文件index.js的作用是组合modules中所有的子模块,并导出store;
在counter.js中:initialState是初始状态的数据,reducer是修改数据的方法,解构是为了生成action对象进而对数据进行修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import { createSlice } from '@reduxjs/toolkit' const counter = createSlice({ name: 'counter' , //初始状态数据 initialState: { count: 0 }, //修改状态的方法,支持直接修改 reducers: { inscrement (state) { state.count++ }, decrement (state) { state.count-- } } }) //解构出来actionCreater函数 const { inscrement, decrement } = counter.actions //获取reducer const reducer = counter.reducer //以按需导出的方式导出actionCreater export { inscrement, decrement } //以默认导出的方式导出reducer export default reducer |
在store/index.js:
1 2 3 4 5 6 7 8 9 | import { configureStore } from '@reduxjs/toolkit' ; import counterReducer from './modules/counter.js' //创建根store组合子模块 const store = configureStore({ reducer: { counter: counterReducer } }) export default store |
再全局注入,scr/index.js:
在React组件中使用store的数据,需要用到一个钩子函数 useSelector,它的作用是把store中的数据映射到组件中
state.counter中的counter来自于组件中的name;接下来即可使用count拿到值。
如果需要修改store中的数据,需要用到另外一个hook函数-useDispatch,它的作用是生存提交action对象的dispatch函数,样例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import React from "react" ; import { useSelector, useDispatch } from "react-redux" ; import { inscrement, decrement } from "../store/modules/counter" ; export default function Home() { const { count } = useSelector((state) => state.counter); const dispatch = useDispatch(); return ( <div className= "App" > <button onClick={() => dispatch(decrement())}>-</button> {count} <button onClick={() => dispatch(inscrement())}>+</button> </div> ); } |
路由和仓库都配好了其他的,用到的话再去搜
转自:搭建react项目简易框架_react框架-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探