dva 的一些特殊的写法

dva 的一些奇怪的用法

dva 基础 请自行查阅,本文不科普

1、12 步 30 分钟,完成用户管理的 CURD 应用 

2、dva 的中文文档

3、dva 知识导图

4、antd-admin 有没有听说过?

5、中间件 redux-saga 可以重点看一下

6、dva入门指引

7、umi + dva 可以了解一下dva 怎么和其他框架配置使用

8、roadhog 配置 ,dva 配置????

一、一些需要理解的概念

1、dispatch 是异步的(基本上所有用到的情况都是异步的,考虑到本人知识面的情况,可能存在一些同步情况的实现)

2、effects 的函数参数,第一个action(这里不一定要使用payload, type 值被占有了), 第二个参数,里面有put, call, select, take 等redux-saga 的一些方法,可以查阅上面redux-saga 文档。

3、yield 的异步的东西不会阻碍js线程的正常运行

二、特殊需求

1. 需要实现每个几秒延时执行某个操作

// 首先实现delay 函数
const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

// 然后在effect函数里面
{
    where (flag){
         yield call(delay, 3000); 
    }
}

2. conform Dialog流程控制

import React from "react"
import { Dialog } from "组件库"

export default ({
  title = "",
  content = "确认删除?"
} = {}) => new Promise((resolve, reject) => {
  Dialog.confirm({
    content: <span>{content}</span>,
    title,
    onOk: () => {
      resolve(true)
    },
    onCancel: () => {
      resolve(false)
    }
  })
})

3. take 等待其他model 的 一些action执行,like

let datas = yield select(state => state.common.datas);
if (!datas.length) {
  yield take("common/changeBase");
  datas = yield select(state => state.common.datas);
}

持续更新中。。。

欢迎交流!!!

猜你喜欢

转载自blog.csdn.net/wangweiren_get/article/details/83045425
dva