Dva - 起步
https://github.com/76351506/dva-cli.git
Dva 基础
namespace
model 的命名空间,同时也是他在全局 state 上的属性,只能用字符串,不支持通过 . 的方式创建多层命名空间。
state
初始值,优先级低于传给 dva() 的 opts.initialState。
reducers
以 key/value 格式定义 reducer。用于处理同步操作,唯一可以修改 state 的地方。由 action 触发。
格式为 (state, action) => newState 或 [(state, action) => newState, enhancer]。
详见: https://github.com/dvajs/dva/blob/master/packages/dva-core/test/reducers.test.js
effects
以 key/value 格式定义 effect。用于处理异步操作和业务逻辑,不直接修改 state。由 action 触发,可以触发 action,可以和服务器交互,可以获取全局 state 的数据等等。
格式为 (action, effects) => void 或 [(action, effects) => void, { type }]。
subscriptions
以 key/value 格式定义 subscription。subscription 是订阅,用于订阅一个数据源,然后根据需要 dispatch 相应的 action。在 app.start() 时被执行,数据源可以是当前的时间、服务器的 websocket 连接、keyboard 输入、geolocation 变化、history 路由变化等等。
格式为 ({ dispatch, history }, done) => unlistenFunction。
不会配置装饰器可参考
https://www.yuque.com/docs/share/c4c1479e-114c-4b17-ab70-65748a3db54b?# 《在 dva 使用装饰器》
开始
- 引入 history 模块
- 配置
- index.js
1 | import dva from "dva"; |
router 路由设置
- index.js
1 | import React from "react"; |
routes.js —路由表
1 | import Index from "../containers/Index"; |
map.js–渲染路由
1 | import React, { Component } from "react"; |
dva 路由传参
1 | //state传参 |
封装
- 目录结构
1 | store- |
index.js -加载所有仓库
1 | const context = require.context("./model", false, /\.js$/); |
- model 文件夹-存放仓库
- user.js-用户仓库
1 | import { _getUserByToken } from "@/api/user"; |
- Post link: https://blog.gaocaipeng.com/2020/07/13/ckxmqy/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.