react如何控制全局loading_React+Redux+antd-mobile 应用中 全局Loading 组件的使用问题?...

在React应用中,利用Redux和antd-mobile实现全局Loading组件的控制。在componentWillMount时,通过dispatch异步action发起请求并显示Loading,请求完成通过reducer更新状态关闭Loading。但在多次使用时遇到问题,当尝试再次显示Loading时被先前的逻辑隐藏。解决方案是通过action的状态而不是组件内部的props判断是否显示Loading,维护一个全局的loading状态,在ajax请求成功或失败时改变该状态,确保Loading正确显示和隐藏。
摘要由CSDN通过智能技术生成

我的使用场景:是在进入页面时

React 的 componentWillMount 方法中 去服务器请求用户信息

通过redux dispatch 一个异步的 方法发起ajax请求,同时显示一个Toast.loading(‘正在加载’)

请求执行完成后通过reducer 更新用户的信息,在页面中通过props判断用户是否加载成功。

如果成功会使用Toast.hide()关闭刚才的loading。

这些都是没问题的。

但是我第二次使用Toast.loading 显示其他信息的时候。弹不出loading框,发现在上面的

render方法中先判断了用户是否加载成功,然后给我直接hide掉了。

请问大家在使用全局Loading 的时候是怎么处理的。

class XXX extends React.Component{

componentWillMount(){

//获取用户名

const {userName} = this.props.params;

//参数0表示一直显示loading,Toast.hide()才能关闭

Toast.loading('正在加载...',0);

//通过用户名加载用户详情(ajax请求后台)

this.props.fetchUserDetail(userName);

}

onClick(){

//问题在这里,当这里弹出lading的时候,render方法中的

// isFetchUserSuccess 是true,接着就给我关闭了。界面上什么都看不到

//通过redux改变isFetchUserSuccess的值好像不合理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值