react如何控制全局loading_React项目实现全局 loading 以及错误提示

前言在项目中使用 loading,一般是在组件中用一个变量( 如isLoading)来保存请求数据时的 loading 状态,请求 api 前将 isLoading 值设置为 true,请求 api 后再将 isLoading 值设置为 false,从而对实现 loading 状态的控制,如以下代码:import { Spin, message } from 'antd';import { Bin...
摘要由CSDN通过智能技术生成

前言

在项目中使用 loading,一般是在组件中用一个变量( 如isLoading)来保存请求数据时的 loading 状态,请求 api 前将 isLoading 值设置为 true,请求 api 后再将 isLoading 值设置为 false,从而对实现 loading 状态的控制,如以下代码:

import { Spin, message } from 'antd';

import { Bind } from 'lodash-decorators';

import * as React from 'react';

import * as api from '../../services/api';

class HomePage extends React.Component {

state = {

isLoading: false,

homePageData: {},

};

async componentDidMount () {

try {

this.setState({ isLoading: true }, async () => {

await this.loadDate();

});

} catch (e) {

message.error(`获取数据失败`);

}

}

@Bind()

async loadDate () {

const homePageData = await api.getHomeData();

this.setState({

homePageData,

isLoading: false,

});

}

render () {

const { isLoading } = this.state;

return (

hello world

);

}

}

export default HomePage;

复制代码然而,对于一个大型项目,如果每请求一个 api 都要写以上类似的代码,显然会使得项目中重复代码过多,不利于项目的维护。因此,下文将介绍全局存储 loading 状态的解决方案。

思路

封装 fetch 请求(传送门👉:react + typescript 项目的定制化过程)及相关数据请求相关的 api

使用 mobx 做状态管理

使用装饰器 @initLoading 来实现 loading 状态的变更和存储

知识储备

本节介绍与之后小节代码实现部分相关的基础知识,如已掌握,可直接跳过🚶🚶🚶。

@Decorator

装饰器(Decorator)主要作用是给一个已有的方法或类扩展一些新的行为,而不是去直接修改方法或类本

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值