umi+dva数据流实战,学会了以后你会发现比react-redux好用数倍!

9,323 阅读1分钟

前文介绍

umi框架是由 react + react-route + webpack等进行的封装,而dva则是基于redux和redux-saga的数据流方案,此外dva还额外集成了react-router和fetch。

创建和启动项目脚手架

先创建一个空的文件夹

$ mkdir new-umi-dva

进入此时创建好的文件夹里,创建umi+dva项目

$ cd new-umi-dva
$ yarn create umi

后面选项选择

创建完成以后执行

yarn or cnpm i  //下载依赖
npm start //启动项目 默认启动网址是 http://localhost:8000

现在来写一个根据用户名id查询当前个人信息的功能

项目的目录结构:

一个完整的React页面就是View + Service + Model ,分别对应着index.jsx,service.js,model.js。


index.js


service.js


model.js


代码思路总结:

index.js编写完UI组件后,输入用户ID的事件触发之前userView是空的集合。输入用户ID的事件触发之后,由于用了dva引入的connect装饰器,可以随意在函数里使用this.props.dispatch,这时触发dispatch函数到了model.js的effects里的getViewModel函数里,执行到yield call的时候去触发service.js的函数发送网络请求,再根据服务端的返回数据判断是否去执行yield put操作。如果response.res返回值为true, 则执行yield put操作到reducers的getViewReducer()去更新state里的view数据,当state的值更新以后,就会重新将state.view赋值到index.js的this.props.userView,这时候就取到当前用户ID的个人信息了。


如有错误或者缺漏,欢迎指点!