美文网首页
dva - model

dva - model

作者: 陈大事_code | 来源:发表于2020-03-08 22:02 被阅读0次

model中的结构

const Model = {
  namespace: 'listAndcardList',
  state: {
    list: [],
  },
  effects: { // 异步操作
    *fetch({ payload }, { call, put }) {
      const response = yield call(queryFakeList, payload);
      yield put({
        type: 'queryList',
        payload: Array.isArray(response) ? response : [],
      });
    },
  },
  reducers: { // 同步操作
    queryList(state, payload) {
      return { ...state, list: payload.data };
    },
  },
  subscriptions: { // 监听路由
      sendMessage({dispatch, history}) {
          history.listen({pathname} => {
              if (pathname === '/user') {
                  dispath({
                      type: 'queryList'
                  })
              }
          })
      }
  }
};
export default Model;

说明:

  • namespace是唯一标识,多个model中的namespace不可以相同。
  • reducers中写同步操作,effects中为异步操作。
  • reducers说明:
    1. 参数1为原来的state,参数2为dispatch传的值。
    2. 返回值不可以直接为原来的state指针,可以通过JSON.parse(JSON.stringify(state))来进行赋值操作。
    3. 不可以存在异步操作。
  • effects说明:
    1. 参数1为dispatch传的值。
    2. 参数2中put,就相当于dispatch,用于执行同步操作。
    3. 参数2中的call,用于执行异步操作(接口请求),返回值为接口返回的数据。
    4. 一般来说,先用call来执行异步操作,然后用put来调用reducers来改变state的值。
    5. 记住yield的使用。

相关文章

  • dva/model

    ``` reducers: { // 用于处理数据,定义一些action 用于effects激发,唯一能修改s...

  • dva model

    app.model dva 提供 app.model 这个对象,所有的应用逻辑都定义在它上面。 Model 对象的...

  • dva - model

    model中的结构 说明: namespace是唯一标识,多个model中的namespace不可以相同。 red...

  • DVA 快速入门

    DVA 概念图 DVA 项目搭建 1.导入dva 2.创建app 3.创建model 4.创建component ...

  • Dva属性讲解

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

  • dva学习笔记

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

  • dva使用routerRedux.push 跳转路由

    在dva中使用dva-router的routerRedux来跳转路由,如下: 如果要传递参数: 在model中获取...

  • connect

    Model和UI Component 的通讯方式 方式一:dva中connect是从dva这个库导入的,跟在red...

  • dva model理解

    example.js IndexPage.js router.js scr/index.js 5 .webpack...

  • dva model星号

    *add() {}等同于 add: function*(){} 这是个Generator函数,Generator函...

网友评论

      本文标题:dva - model

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