vuex常用方法

以下是在脚手架搭建的项目中使用vuex。脚手架初始选择vuex后已经引入vuex并且全局注入。

官网中介绍的很清楚了,下面是本人的一点小结。用到的都是mapState这样的模式。

store.js中
export default new Vuex.Store({
    state: {
        myStateArr:[
            {
                id:1,
                age:24,
                name:'lin'
            },
            {
                id:2,
                age:25,
                name:'qi'
            }
        ],
        myStateNum:1
    },
    mutations: {
        //第一个就是store.state,第二个是外部传进来的参数(可选)
        increment (state,params) {
            state.myStateNum += params
        }
    },
    //context具有store相同的方法和属性,params传进来的参数
    //myAction({commit,state,getters},params)
    //actions可以使用异步分发mutations
    actions: {
        myAction(context,params){
            //可以将传进来的参数在传给mutations(可选)
            context.commit('increment',params)
        }
    },
    //personLen(state [,getters])
    getters:{
        myGetter(state){
            return  state.myStateNum;
        },
        myGetterTwo:(state) => (id) => {
            return state.myStateArr.filter(function (value) {
               if( value.id == id){
                   return value
               }
            })
        }
    }
})
界面中使用
state and getters

这两个都是获取状态的,使用方法差不多,getters可以根据传递的参数来获取

import {mapState,mapGetters} from 'vuex'
computed:{
    ...mapState({
        myStateArr: 'myStateArr'
    }),
    ...mapGetters({
        //将this.myGetter 映射为 this.$store.getters.myGetter
        myGetter:'myGetter',
        myGetterTwo:'myGetterTwo'
    })
}
mutations and actions

这两个都是方法,mutation只能用于同步,actions可用于异步

methods:{
    change(){
        this.increment(3)
    },
    changeTwo(){
        this.add(2)
    },
    ...mapMutations({
        //相当于this.$store.commit('increment')
        increment:'increment'
    }),
    ...mapActions({
        //将this.add()映射为this.$store.dispatch('myAction');
        add:'myAction'
    })
}
小结
  1. 上面的increment:'increment'这种键值对相同的可以使用mapMutations(['increment'])这种方式。
  2. state,getter都是状态,用计算属性获取值;mutations,actions里的都是方法,其它方法怎么用,这个也怎么用;
  3. 增加state要用到vue.set(obj,kes,value);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 npm npm install vuex --save 在一个模块化的打包系统中,您必须显式地通过Vue.u...
    萧玄辞阅读 7,985评论 0 7
  • ### store 1. Vue 组件中获得 Vuex 状态 ```js //方式一 全局引入单例类 // 创建一...
    芸豆_6a86阅读 2,953评论 0 0
  • ### store 1. Vue 组件中获得 Vuex 状态 ```js //方式一 全局引入单例类 // 创建一...
    芸豆_6a86阅读 4,001评论 0 3
  • Vuex 的学习记录 资料参考网址Vuex中文官网Vuex项目结构示例 -- 购物车Vuex 通俗版教程Nuxt....
    流云012阅读 5,310评论 0 7
  • vuex 场景重现:一个用户在注册页面注册了手机号码,跳转到登录页面也想拿到这个手机号码,你可以通过vue的组件化...
    sunny519111阅读 12,438评论 4 111