dva的使用

1.安装dva-cli

npm install dva --save 

2.改造项目为dva模式,在src下修改入口文件index.js

import dva from 'dva';
import createHistory from 'history/createHashHistory';
import createLoading from 'dva-loading';
//1初始化创建应用
const app=dva({
	history:createHistory()
})
//2.plugins
app.use(createLoading())
// 3注册model
app.model(require('./models/global').default);
// 4. Router注册视图
app.router(require('./router').default);
//5.Start启动应用
app.start('#root');

3.然后在同级目录下添加路由文件 router.js

import React from 'react';
import { routerRedux, Route, Switch } from 'dva/router';
//按需加载
import dynamic from 'dva/dynamic'
const { ConnectedRouter } = routerRedux;
const RouterConfig= (({ history,app }) => {
    //按需加载
    const dvaTest = dynamic({
        app,
        models:()=>['./model/dvaTest'],
        component: () => import('./page/dvaTest'),
      })
    
    return (
    <ConnectedRouter history={history}>
		<Switch>
			<Route path="/user" component={dvaTest} />
		</Switch>
	</ConnectedRouter>
    )
	
})
export default RouterConfig;

4.开始工作

1.编写ui component
2.定义Model

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

export default{
//namespace表示全局state上的key,当前Model的名称
	namespace:'products',
//state是初始值
	state:{
		productsList:[]
	},
//effect副作用处理异步动作
	effect:{
		*productFun({ payload }, { call, put }){
		//call执行异步函数
			 const response = yield call(products.productsGet, payload);
			 if (response.data) {
		//put发出一个action,相当于dispatch
			 yield put({
                        type: 'initFun',
                        payload: {list:response.data,id: payload.id}
                    });
			 }	
		}
	},
//reducers等同于redux里的reducer,接受action,同步动作更新state
	reducers:{
	initFun(state, action) {
	            return {
	                ...state,
	                id:action.payload.id,
	                productsList:action.payload.list
	            };
	        }
	}
}
5connect起来

dva提供了connect方法。这个connect就是react-redux的connect

// Products是ui组件
export default connect(({ products }) => ({
  products,
}))(Products);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值