前文介绍
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的个人信息了。
如有错误或者缺漏,欢迎指点!