美文网首页
dva.js 解读

dva.js 解读

作者: 做最棒的 | 来源:发表于2019-04-25 17:10 被阅读0次

学习了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)); // 路由跳转
    },
  },

相关文章

  • dva.js 解读

    学习了dva,感觉好棒,在使用redex、redux-thunk中的中的疑问在dva中都有效的解决了。1、mode...

  • dva.js 上手

    dva.js 简介 dva 是阿里前端架构师 sorrycc 带 team 研发的一套轻量级前端框架,其目的是尽量...

  • dva.js 上手

    初始化 安装 dva-cli 用于初始化项目: 创建项目目录,并进入该目录: 初始化项目: 然后运行 npm st...

  • Dva.js总结

    1.why Dva dva 是基于现有应用架构 (redux + react-router + redux-sag...

  • Dva.js 快速上手指南

    先说些废话 最近在开发React技术栈的项目产品,对于数据状态的管理使用了Dva.js,作为一个资深的ow玩家,我...

  • dva.js 源码理解

    一. 先从官方快速上手 dva-cli 说起,建立起工程,参考 dva官网, 然后打开 index.js看到下面,...

  • dva.js学习梳理集

    不知大家学 react 或 dva 时会不会有这样的疑惑: es6 特性那么多,我需要全部学会吗? react c...

  • dva.js setInterval 倒计时

    参考:https://dvajs.com/guide/introduce-class.html#reducer c...

  • dva.js和umi.js

    最近公司的项目有用到dva框架,这里做下学习总结;菜鸟一枚,如有错误,欢迎指正。 dva是什么 官网:dva.js...

  • Dva.js部分关键词介绍

    1、connect 用来将model、component链接在一起。 component里可以拿到model中定义...

网友评论

      本文标题:dva.js 解读

      本文链接:https://www.haomeiwen.com/subject/trengqtx.html