美文网首页
vue 利用vuex实现切换页面的动画效果

vue 利用vuex实现切换页面的动画效果

作者: 芸芸众生ing | 来源:发表于2019-06-13 22:29 被阅读0次

    1.首先需要 在vuex中初始化一个state属性,默认为true;

    export default {
        state: {
      //初始化一个默认值
            isBack: true,
        }
    }
    
    1. 再到mutations里面创建修改isBack属性值的方法;
      export default {
        state: {
            isBack: true,
        },
        mutations: { 
          //这个方法用于修改state里面isBack属性的值
            isBack(a, n) {
                a.isBack = n
            }
        },
    }
    

    3.最后需要在vuex里面创建异步修改isBack的方法

      export default {
        state: {
            isBack: true,
        },
        mutations: { 
          //这个方法用于修改state里面isBack属性的值
            isBack(a, n) {
                a.isBack = n
            }
        },
       actions: {
            isBack({ commit }) {
                //在100毫秒后修改isBack的值为true
                setTimeout(() => {
                    commit('isBack', true)
                }, 100);
            }
        }
    }
    

    到这里仓库层就写OK了,接下来需要的就是transition组件配合

    4.需要动画切换的地方用 <transition> 组件,并添加上name属性和值

    <transition :name="aa">
        <router-view class="Router"/>
    </transition>
    

    5.写CSS样式

    
    .Router {
        position: absolute;
        width: 100%;
        height: 100%;
        transition: all 0.6s ease;
        top: 0;
    }
    .slide-left-enter,
    .slide-right-leave-active {
        /* opacity: 0; */
        transform: translate(100%, 0);
    }
    
    .slide-left-leave-active,
    .slide-right-enter {
        opacity: 0;
        transform: translate(-100% 0);
    }
    

    6.在当前组件内添加方法,监听isBack的状态

    import { mapState } from "vuex";
    export default {
        data() {
            return {
                aa: "slide-left",
            };
        },
            watch: {
            isBack(a, b) {
                if (a) {
                    this.aa = "slide-left";
                } else {
                    this.aa = "slide-right";
                    this.store.dispatch('isBack')
                }
            }
        },
        computed: {
            ...mapState(["isBack"])
        },
    

    7.到这里已经算是大功告成了,就是需要在前进后退的地方改变isBack的值

      this.store.commit("isBack", false);
    

    实现的方法千千万,总有一个适合你.

    相关文章

      网友评论

          本文标题:vue 利用vuex实现切换页面的动画效果

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