搭建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博客

 

posted @   信铁寒胜  阅读(288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示