Dva 基本操作

JavaScript017

Dva 基本操作,第1张

一块学习,大家相互参考。

通过 npm 安装 dva-cli 并确保版本是 0.9.1 或以上。

安装完 dva-cli 之后,就可以在命令行里访问到 dva 命令( 不能访问? )。现在,你可以通过 dva new 创建新应用。

这会创建 dva-quickstart 目录,包含项目初始化目录和文件,并提供开发服务器、构建脚本、数据 mock 服务、代理服务器等功能。

然后我们 cd 进入 dva-quickstart 目录,并启动开发服务器:

几秒钟后,你会看到以下输出:

在浏览器里打开 http://localhost:8000 ,你会看到 dva 的欢迎界面。

通过 npm 安装 antd 和 babel-plugin-import 。 babel-plugin-import 是用来按需加载 antd 的脚本和样式的,详见 repo 。

编辑 .webpackrc ,使 babel-plugin-import 插件生效。

[图片上传中...(-e0b96d-1532076307190-0)]

我们要写个应用来先显示产品列表。首先第一步是创建路由,路由可以想象成是组成应用的不同页面。

新建 route component routes/Products.js ,内容如下:

添加路由信息到路由表,编辑 router.js :

然后在浏览器里打开 http://localhost:8000/#/products ,你应该能看到前面定义的 <h2> 标签。

随着应用的发展,你会需要在多个页面分享 UI 元素 (或在一个页面使用多次),在 dva 里你可以把这部分抽成 component 。

dva 通过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。

新建 model models/products.js :

这个 model 里:

然后别忘记在 index.js 里载入他:

到这里,我们已经单独完成了 model 和 component,那么他们如何串联起来呢?

dva 提供了 connect 方法。如果你熟悉 redux,这个 connect 就是 react-redux 的 connect 。

编辑 routes/Products.js ,替换为以下内容:

最后,我们还需要一些初始数据让这个应用 run 起来。编辑 index.js :

优点:简化redux操作流程,集成redux-saga中间件

在effects中

函数接受两个参数(接收到的数据,{此参数可以解构出call,put等方法})

然后使用reducers异步修改state中的数据

reducers中的函数的第二个参数就是put传过来的对象,可以解构出payload

return 返回的状态会合并到state中

回到页面组件补充connect()()第一个圆括号中的参数

[图片上传失败...(image-57ff75-1611135362899)]

课堂实战

1.index.js

2.router.js

3.connect连接model

4.跳转路由

发dispatch的时候带一个callback

当判断code成功的时候 执行回调

dispatch函数执行后返回是一个Promise

effects里面调用的函数可以返回值

返回值相当于这个Promise里resolve(这个值)。可以被.then的第一个回调参数拿到