美文网首页
dva学习笔记

dva学习笔记

作者: 陈川Lethe | 来源:发表于2017-04-11 16:11 被阅读3626次

Model:

model是dva最重要的概念,以下是经典的例子:

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' });
        }
      });
    },
  },
});

Model包括五个属性:

namespace:

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

type:String

state:

初始值

reducers

以key/value的格式来定义reducer。用于处理同步操作,唯一可以修改state的地方,由action触发。格式为:(state, action) => newState 或者 [(state, action) => newState, enhancer]

effects:

以key/value格式定义effect。用于处理异步操作和业务逻辑,不直接修改state。由action触发,可以触发 action,可以和服务器交互,可以获取全局 state 的数据等等。

subscriptions:

相关文章

  • dva学习笔记

    Model: model是dva最重要的概念,以下是经典的例子: Model包括五个属性: namespace: ...

  • dva-antd学习笔记

    1、Model: (1)、namespace:空间名,类似redux的仓库名。 (2)、state :存放stat...

  • dva 笔记

    put 等同 dispatch dva 默认所有 effect 为 takeEvery, 可以使用下面的写法实现 ...

  • dva.js和umi.js

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

  • 初识redux-saga

    最近项目用了dva,dva对于异步action的处理是用了redux-saga,故简单学习了下redux-saga...

  • axios ajax请求实例

    说明 该实例是以dva命令创建的项目:$ dva new dva-quickstart技术栈:dva + axio...

  • Dva 基本操作

    一块学习,大家相互参考。 快速上手 #安装 dva-cli 通过 npm 安装 dva-cli 并确保版本是 0....

  • dva - Route Components

    dva实践 学习react,快速入门的练习 创建引用可以直接使用dva-cli的各项命令快速创建项目. 项目开始前...

  • Ant Design项目实战

    创建新应用:dva new dva-quickstartcd dva-quickstartnpm start 使用...

  • dva.js 解读

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

网友评论

      本文标题:dva学习笔记

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