美文网首页
vue-cli3使用vue-progressbar

vue-cli3使用vue-progressbar

作者: 海晏河清_富贵荣华 | 来源:发表于2020-05-05 20:15 被阅读0次

    1、安装vue-progressbar

    yarn add  vue-progressbar --save
    或者
    npm i vue-progressbar --save
    

    2、在main.js中引入

    import VueProgressBar from 'vue-progressbar'
    Vue.use(VueProgressBar, {
      color: '#1890ff',  // 进度条颜色
      failedColor: 'red', // 失败显示的颜色
      height: '2px'  // 进度条高度
    })
    

    3、在Vue组件中使用

    <template>
          <div id="app">
            <router-view></router-view>
            <vue-progress-bar></vue-progress-bar>
          </div>
    </template>
    <script>
    export default {
        name: 'app',
        created () {
            this.$Progress.start()
            this.$router.beforeEach((to, from, next) => {
                if (to.meta.progress !== undefined) {
                 let meta = to.meta.progress
                 this.$Progress.parseMeta(meta)
                }
                //  start the progress bar
                this.$Progress.start()
                //  continue to next page
                next()
             })
            this.$router.afterEach((to, from) => {
              //  finish the progress bar
              this.$Progress.finish()
             })
            }
        }
    </script>
    
    

    4、若想在http请求中也使用progressbar,需要在main.js改东西

    //变动前
    new Vue({
      router,
      render: h => h(App)
    }).$mount('#app')
    // 变动后
    export default new Vue({
      ...App,
      router,
      render: h => h(App)
    }).$mount('#app')
    // 在封装好的http请求页面中导入main.js,此处以axios为例:
    import axios from 'axios'
    import qs from 'qs'
    import app from './main'
    const Axios = axios.create({
        baseURL: '/api',
        timeout: 10000,
        responseType: "json",
        withCredentials: true, // 是否允许带cookie这些
        headers: {
            "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
        }
    });
    //POST传参序列化(添加请求拦截器)
    Axios.interceptors.request.use(
        config => {
            // 在发送请求之前开始进度条
            app.$Progress.start(); // for every request start the progress
            if (config.method === "post") {
                // 序列化
                config.data = qs.stringify(config.data);
                // 温馨提示,若是贵公司的提交能直接接受json 格式,可以不用 qs 来序列化的
            }
            return config;
        },
        error => {
            app.$Progress.fail(); //结束进度条
            return Promise.reject(error.data.error.message);
        }
    );
    //返回状态判断(添加响应拦截器)
    Axios.interceptors.response.use(res => {
            app.$Progress.finish(); // 结束进度条
            return res.data;
        },
        error => {
            // 返回 response 里的错误信息
            app.$Progress.fail(); //错误进度条
            let errorInfo = error.data.error ? error.data.error.message : error.data;
            return Promise.reject(errorInfo);
        }
    );
    

    原文链接:https://blog.csdn.net/zhuxiandan/java/article/details/83663153

    相关文章

      网友评论

          本文标题:vue-cli3使用vue-progressbar

          本文链接:https://www.haomeiwen.com/subject/qvevghtx.html