Vue+antd中关于发送请求时候的Loading遮罩层闪烁无法覆盖问题

需求:在发送请求的时候需要给全局加loading样式,初步实现在App.vue中直接包裹整个router-view,然后监听vuex中的值,值在封装axios的时候,即请求拦截以及响应请求的时候改变

App.vue

    <div id="app">
      <a-spin :spinning="LOADING_PAGE" size="large">
        <router-view />
      </a-spin>
    </div>
  setup() {
    const store = useStore();
    const LOADING_PAGE = computed(() => {
      return store.getters.LOADING_PAGE;
    });
    return { LOADING_PAGE};
  },

request.ts

// 请求拦截
service.interceptors.request.use((config) => {
    store.commit("MDF_LOADING_PAGE", true);
}
// 响应拦截(以及失败也要更改MDF_LOADING_PAGE)
service.interceptors.response.use((response) => {
	store.commit("MDF_LOADING_PAGE", false);
}

问题:如果在Modal中也有table列表请求的时候,Modal的层级可能会覆盖loading
所以我们需要两个loading,分别用在全局和Modal中,然后我们写两个值分别控制这个loading样式,然后在Modal中就不需要全局的loading,我们在request.ts更改一下即可

// 请求拦截
service.interceptors.request.use((config) => {
   if (!store.getters.LOADING_MODAL) {
    store.commit("MDF_LOADING_PAGE", true);
  }
}
// 响应拦截(以及失败也要更改MDF_LOADING_PAGE)
service.interceptors.response.use((response) => {
	store.commit("MDF_LOADING_PAGE", false);
	store.commit("MDF_LOADING_MODAL", false);
}

Modal页面

  <a-spin :spinning="LOADING_MODAL" size="large">
	...
  </a-spin>
  setup() {
    const store = useStore();
    const LOADING_MODAL= computed(() => {
      return store.getters.LOADING_MODAL;
    });
    return { LOADING_MODAL};
  },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值