欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

程序员文章站 2023-11-27 08:43:52
准备 利用vue-cli脚手架创建项目 进入项目安装vuex、axios(npm install vuex,npm install axios) ax...

准备

  • 利用vue-cli脚手架创建项目
  • 进入项目安装vuex、axios(npm install vuex,npm install axios)

axios配置

项目中安装axios模块(npm install axios)完成后,进行以下配置:

main.js

//引入axios
import axios from 'axios'
//修改原型链,全局使用axios,这样之后可在每个组件的methods中调用$axios命令完成数据请求
vue.prototype.$axios=axios

loading组件

我这里就选择使用iview提供的loading组件,

npm install iview

main.js
import iview from 'iview';
import 'iview/dist/styles/iview.css';
vue.use(iview);

安装引入后,将loading写成一个组件loading.vue

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

vuex state状态设置控制loading的显隐

store.js(vuex)

export const store = new vuex.store({
  state:{
    isshow:false
  }
})

在state中定义isshow属性,默认false隐藏

v-if="this.$store.state.isshow"

为loading组件添加v-if绑定state中的isshow

组件使用axios请求数据

<button @click="getdata">请求数据</button>
methods:{
    getdata(){
      this.$axios.get('https://www.apiopen.top/journalismapi')
      .then(res=>{
        console.log(res)//返回请求的结果
      })
      .catch(err=>{
        console.log(err)
      })
    }
  }

我这里使用一个按钮进行触发事件,利用get请求网上随便找的一个api接口,.then中返回请求的整个结果(不仅仅包括数据)

axios拦截器配置

main.js

//定义一个请求拦截器
axios.interceptors.request.use(function(config){
 store.state.isshow=true; //在请求发出之前进行一些操作
 return config
})
//定义一个响应拦截器
axios.interceptors.response.use(function(config){
 store.state.isshow=false;//在这里对返回的数据进行处理
 return config
})

分别定义一个请求拦截器(请求开始时执行某些操作)、响应拦截器(接受到数据后执行某些操作),之间分别设置拦截时执行的操作,改变state内isshow的布尔值从而控制loading组件在触发请求数据开始时显示loading,返回数据时隐藏loading

特别注意:这里有一个语法坑(我可是来来回回踩了不少次)main.js中调取、操作vuex state中的数据不同于组件中的this.$store.state,而是直接store.state 同上面代码

效果展示

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

总结

以上所述是小编给大家介绍的vue基于vuex、axios拦截器实现loading效果及axios的安装配置,希望对大家有所帮助