dva.js 解读

学习了dva,感觉好棒,在使用redex、redux-thunk中的中的疑问在dva中都有效的解决了。
1、model交叉引用
2、自动注册

先来一个实例
app.model({
  namespace: 'todo',
  state: [],
  reducers: {
    add(state, { payload: todo }) {
      // 保存数据到 state
      return [...state, todo];
    },
  },
  effects: {
    *save({ payload: todo }, { put, call }) {
      // 调用 saveTodoToServer,成功后触发 `add` action 保存到 state
      yield call(saveTodoToServer, todo);
      yield put({ type: 'add', payload: todo });
    },
  },
  subscriptions: {
    setup({ history, dispatch }) {
      // 监听 history 变化,当进入 `/` 时触发 `load` action
      return history.listen(({ pathname }) => {
        if (pathname === '/') {
          dispatch({ type: 'load' });
        }
      });
    },
  },
subscriptions: {
    setup({ dispatch, history }) {
      history.listen(({ pathname }) => {
        if (pathname === '/users') {
          dispatch({
            type: 'users/fetch',
          });
        }
      });
    },
  },
});

一、namespace

model 的命名空间,同时也是他在全局 state 上的属性,只能用字符串,不支持通过 . 的方式创建多层命名空间

1.1 effects

type 类型有:

  • takeEvery
  • takeLatest
  • throttle
  • watcher

在effects中跳转

import { router } from 'dva/router';
import router from 'umi/router';
 effects: {
    *save({ payload: todo }, { put, call }) {
      // 调用 saveTodoToServer,成功后触发 `add` action 保存到 state
      yield call(saveTodoToServer, todo);
      yield put({ type: 'add', payload: todo });
     // Inside Effects
     window.location.hash = activeKey;
      // yield put(router.push(activeKey)); // 路由跳转
    },
  },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • dva框架的使用详解及Demo教程 在前段时间,我们也学习讲解过Redux框架的基本使用,但是有很多同学在交流群里...
    光强_上海阅读 61,401评论 5 55
  • dva.js 简介 dva 是阿里前端架构师 sorrycc 带 team 研发的一套轻量级前端框架,其目的是尽量...
    那颗星_fcaf阅读 9,119评论 0 24
  • 洛蓂 于20:50元旦夜作 晚饭后,惬意地卧在沙发上,看着电视,看到笑点时,不由得欣喜起来。我正在享受没有作业的乐...
    洛蓂阅读 3,025评论 2 5
  • 第一回:老街 在那个起风的黄昏,女孩坐在秋千上摇摆,地上的一个个水潭上倒影出她纯净的侧脸,似是无法拼起的破碎记...
    祁小羲吖阅读 1,355评论 0 0
  • 单点突破法--全面思考: 评估分析: 反思改进:逻辑,导图,记录 想成为什么样子的人: 1考取注会证书的人 2较强...
    莺子_3f93阅读 1,220评论 0 0

友情链接更多精彩内容