umi学习:dva状态管理

本文介绍如何在umi框架中使用dva进行状态管理。首先,dva是基于react-redux和redux-saga的封装,尤其适用于处理异步操作。在umi3的环境中,无需额外安装,直接在src/models创建全局或模块状态管理文件。例如,创建user.js文件进行登录状态管理。点击登录按钮时,通过props.dispatch调用loginAsync方法,触发接口请求。同时,可以利用subscriptions监听并响应用户行为。umi已经内置了dispatch,无需手动引入。服务层src/services/user.js负责接口请求,Mock文件夹下则可设置模拟数据。想要深入学习,官方文档和更多文章是不错的选择。
摘要由CSDN通过智能技术生成

问题导向

dva是什么?如何使用?如何结合umi使用?

如果你都有了答案,可以忽略本文章,或去umi学习地图寻找更多答案


学前必知

对react-redux有一定了解

what

dva是基于react-redux和redux-sage的封装
redux-sage用于在react-redux中处理异步函数,redux-sage则是基于generator的封装
不会redux-sage没问题,要会一点generator,类型promise的async await,请搜索相关文章

how

如果是使用umi3的脚手架安装项目,无需安装任何东西即可使用

在src → models创建一个user.js文件

umi约定这个为全局状态管理文件,当然,也可以写在模块中,使用的时候是通过命名空间来匹配。

导出一个对象,该对象有如下几个属性:

export default {
   
	namespace: '',            string,命名空间,通过它来区分调用的哪一个模块的状态管理
	state: {
   },                object,初始化状态,用于渲染视图
	reducers: {
   },             function-object,同步方法,用于修改初始化状态
	effects: {
   },			  function-object,异步方法,用于请求接口,然后调用同步方法修改数据
	subscriptions: {
   }         function-object,生命周期,应用启动时调用定义好的方法
}

effect异步方法的使用

put       调用同步方法
call      调用异步方法
select    获取参数

例子: 登录修改登录状态和用户名

user → login页面

点击登录时,验证字段后,通过props.dispatch派发请求,参数:type:user命名空间下的loginAsync方法,payload:账号密码。

umi中的props自带有dispatch了,无需再引入就可使用,使用connect获取状态,和redux一样

import React, {
    useState } from 'react';
import {
    history, useLocation } from 'umi';
import {
    connect } from 
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值