vuex模块辅助函数,混入,Vue轮播图

143 阅读2分钟

vuex模块辅助函数

创建modules文件下的modA.js文件, 模块的局部状态如下

const state=()=>({

    modaStr:'我是模块A的数据'

  })

const getters={

  strGetter(state){

    return state.modaStr+'getter'

  }

  }

const mutations={

  CHANGESTRA(state,payload){

    state.modaStr=payload

  }

  }

const actions={

  waitStr({commit},data){

    setTimeout(() => {

      commit('CHANGESTRA',data)

    }, 1500);

  }

  }

  export default{

    namespaced:true,

    state,

    getters,

    mutations,

    actions

  }

 computed:{

    /* 最简单的使用数组的方式获取State属性 */

    ...mapState('modA',['modaStr']),

    /* 和data数据名重复改名 */

    /* 第一种 */

    ...mapState({

      a:state=>state.modA.modaStr,

    }),

    /* 第二种 */

    ...mapState('modA',{a:state=>state.modaStr}),

\

     /* 最简单的使用数组的方式获取Getters属性 */

    ...mapGetters('modA',['strGetter'])

    /* 使用对象的方式获取Getters属性 */

    ...mapGetters('modA',{strA:'strGetter'})

  },

  methods:{

    /* 使用数组的方式获取Mutations里面的方法 */

    ...mapMutations('modA',['CHANGESTRA']),

    /* 另一种数组方式的写法 */

    ...mapMutations([

      'modA/CHANGESTRA', //->this'modA/CHANGESTRA'

      ]),

    /* 使用对象的方式获取Mutations方法 */

      ...mapMutations('modA',{

        fn1:'CHANGESTRA'

        }),

changemoda(){

      /* this.$store.commit('modA/CHANGESTRA','后来的我们都到了18k') */

      /* this.CHANGESTRA('后来的我们都到了18k') */

      /* this'modA/CHANGESTRA' */

      this.fn1('后来的我们都到了18k')

    },

\

   /* 使用数组的方式获取Actions里面的方法 */

    ...mapActions('modA',['waitStr']),

    /* 数组的方式第二种写法 */

    ...mapActions([

      'modA/waitStr'

    ]),

    /* 使用对象的方式获取Actions方法 */

    ...mapActions('modA',{

      fn2:'waitStr'

    })

   waitChange(){

      /* this.$store.dispatch('modA/waitStr','异步处理完成') */

      this.waitStr('异步处理完成')

      this'modA/waitStr'

      this.fn2('异步处理完成')

    },

  }

\

混入

局部混入

/* 把公共的内容放在mixinsA.js文件中 */

export default{

    data(){

        return{

            msg:'vue初始化完毕'

        }

    },

    created() {

        console.log(this.msg);

    },

    methods: {

        fn(){

            alert(this.msg)

            console.log('mixins ``');

        }

    },

APP页面导入局部

import mixinsA from '@/mixins/mixinsA'

export default {

  name:'App',

  /* 混入对象的钩子将在组件自身钩子之前调用 */

  mixins:[mixinsA],

  methods:{

    /* 数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先 */

    fn(){

      alert('app init')

    }

  }

}

全局混入,慎用

Vue.mixin({

  created:function(){

    console.log('全局init..');

  }

})

/* 用了全局混入会执行4遍,因为加载的时候会执行一遍main.js里面全局混入的内容,有三个页面需要使用,三个vue页面分别执行一遍 */

\

制作Vue版本的轮播图

第一步:

安装依赖

npm i swiper@5 --save

npm i vue-awesome-swiper@3 --save

 

第二步:

全局安装

在main.js里面操作:

import VueAwesomeSwiper from 'vue-awesome-swiper'

/* 在node_modules里面找到swiper文件夹里面的css文件 */

import 'swiper/css/swiper.css'

/* 使用Vue.use来注册一个轮播图插件 */

Vue.use(VueAwesomeSwiper)

\

第三步:

在自己的组件文件夹中 新建一个轮播图组件 MySwiper.vue:

并复制以下代码到你的组件中:

\

.swiper-container {   width: 500px;   height: 400px;   border: 1px solid red; }

\