zoukankan      html  css  js  c++  java
  • vue-router切换时loading效果实现

    实现原理

    1. 可以在vuex中维护一个isLoading 的变量

    2. 在 router.beforeEach 钩子中 设置 isLoading = true , 在 router.afterEach 中 设置 isLoading = false

    Vuex:

    actions.js:

    export default {
      onLoading(context, isLoading) {
        context.commit('setLoading', isLoading);
      }
    };

    mutations.js:

    export default {
      setUser(state, user) {
        state.user = user;
      },
      setUserPlaylist(state, playlist) {
        state.userPlaylist = playlist;
      },
      setCount(state, count) {
        state.count = count;
      },
      setLoading(state, isLoading) {
        console.log(isLoading);
        state.isLoading = isLoading;
      }
    };

    state.js:

    export default {
      user: null,
      userPlaylist: [],
      count: 0,
      isLoading: null
    };

    在main.js中:

    router.beforeEach((to, from, next) => {
      store.dispatch('onLoading', true);
      console.log(store.state.isLoading);
      next();
    });
    // 这里为了让效果明显一些加了延时
    router.afterEach((to, from) => {
      setTimeout(function() {
        store.dispatch('onLoading', false);
        console.log(store.state.isLoading);
      }, 1000);
    });

    3. 在根组件(即所在的父组件)上 放置一个Loading组件,例如:

    computed: {
        ...mapState(['count', 'isLoading']),
        keyword() {
          return this.$route.params.keywords;
        }
      },

    完成

  • 相关阅读:
    提取ecshop的mysql类
    phpexcel读取excel的xls xlsx csv格式
    Awstats显示国家地区插件GeoIP安装
    GeoIP Legacy City数据库安装说明
    JavaArrayList和数组间的相互转换
    mysql 初步认识
    HTTP ContentType
    ibatis 增加调试方法
    你了解Java中的Future吗?
    Java 环境问题总结
  • 原文地址:https://www.cnblogs.com/hahahakc/p/13203785.html
Copyright © 2011-2022 走看看