- 一个后台管理界面的前台
- 主要技术栈:react hooks + redux + immutable.js + antd
- 这一章主要讲 redux 结构与 login 的 UI
src 目录改造
1 | ├─api // 网路请求代码、工具类函数和相关配置 |
重写 App.js
在 pages 文件夹下创建两个文件夹:login 和 main。
分别在两个文件夹下创建 index.js 和 style.less,里面写入:
1 | import React from 'react'; |
login 的 index.js 改一下就行了。
在 App.js 中导入路由:
1 | import { BrowserRouter as Router, Route } from 'react-router-dom'; |
使用路由:
1 | return ( |
现在就可以看见效果了。
使用 redux
创建总仓库
在 url 的 store 里面,创建 reducer.js 和 index.js,其中reducer.js 代码如下:
1 | // 合并 reducer 函数 |
这里创建了一个总 reducer,同时我们使用 redux-immutable 的 combineReducers 来对各组件的 reducer 进行整合。
之后在 index.js 中的代码:
1 |
|
这个代码使用 createStore 创建了总的仓库,使用中间件 thunk,启用了 chrome 的插件 Redux。
创建分仓库
在 pages 文件夹下的 login 文件夹中创建文件夹 store,里面创建四个文件:导出变量的index.js、管理数据的 reducer.js、管理变量的 constants.js、管理 action 的 actionCreators.js,其中,在 reducer.js 中写入:
1 | // 获取常量 |
这就创好了 reducer.js 的基础结构,然后在 index.js 中写入:
1 | // 导入仓库 |
其他两个文件用时再改。其中 ajax 请求以及后续数据处理的具体代码全部放在 actionCreator 中,由 redux-thunk 进行处理,尽可能精简组件代码。
以后每个需要处理数据的组件都按照上面的结构写。
合并分仓库到总仓库
去修改 src/store/ 下的 reducer.js:
1 | // 合并 reducer 函数 |
这样就把 login 里的数据放进总仓库了,可以在 chrome 的 Redux 查看。
以后每个每一个容器组件都有自己独立的 reducer,然后再全局的 store 下通过 redux 的 combineReducer 方法合并。
写 Login 的 UI
1 | { |