• vuex笔记


    1、npm install vuex //安装至生产环境

    2、在src中新建vuex文件夹,添加store.js文件,在store.js文件中

    a、引入vue,vuex:

    import Vue from 'vue'

    import Vuex from 'vuex'

    Vue.use(Vuex)

    b、声明全局共享状态及数据:

    const state = {

      num:1

    }

    c、声明用于修改全局state对象属性的mutation对象,并添加方法:

    const mutations = {

      add(state,n) {//第一个参数为固定参数指向全局state对象,第二个参数为自定义参数

        return state.num += n

      },

      reduce(state) {

        return state.num --

      }

    }

    d、声明用于监听state对象内属性变化的并作出修改的getters对象

    const getters = {

      num(state){//每当state中的num属性变化时都会调用该num方法

        return state.num += 3

      }

    }

    e、声明异步修改状态的actions,actions可以调用mutations内的方法,作用与mutations类似,只不过是异步的去修改state,不阻塞js执行流

    const actions = {

      addAction(context){//context是整个store对象

        context.commit('add',10) //直接调用mutation中的add方法

      },

      reduceAction({commit}){//可以直接使用commit作为参数,注意{}

        commit('reduce')

      }

    }

    3、在store.js中对外开放以上定义的对象

    export default new Vuex.Store({

      state,mutations,getters,actions

    })

    4、在需要使用的组件文件中引入vuex,在此组件中模板中可以通过$store拿到store实例,js用this.$store

    import store from '@/vuex/store'

    import { mapState,mapMutation,mapGetters,mapActions }

    export default {

      data(){

        return {}

      },

      computed:{

        ...mapState(['num']),//直接引入store中的num在此组件中可以直接使用

        ...mapGetters(['num']) //直接引入store中的num在此组件中可以直接使用,每当num有变化时都会改变

      },

      methods:{

        ...mapMutations(['add',reduce]),//在数组中引入mutations内你所需的方法,在此组件中你就可以直接调用了

        ...mapActions(['addAction']),//同上

      }

    }

    5、模块化

    const moduleA = {

      state:{},

      mutaions:{}

    }

    const moduleB = {

      state:{},

      mutaions:{}

    }

    export default new Vuex.store({

      modules:{a:moduleA,b:moduleB}

    })

  • 相关阅读:
    asp.net页面刷新后样式就发生了改变
    ASP.NET MVC 入门系列教程
    javascript打开邮箱服务器
    jquery验证邮箱
    MySQL数据库的索引类型
    JS判断浏览器
    Silverlight 3 新特性
    moss 2007 添加关键字及最佳匹配
    vs2008 常用快捷键
    Microsoft Enterprise Library 5.0正式版本已经发布
  • 原文地址:https://www.cnblogs.com/muzs/p/10534194.html
Copyright © 2020-2023  润新知