美文网首页
14.vuex相关操作

14.vuex相关操作

作者: nora_wang | 来源:发表于2019-06-25 23:14 被阅读0次

    状态管理有5个核心,分别是state、mutation、action、getter以及module。
    项目中store注入到vue实例后,可直接this.$store获取。
    1.state

    state:{
            count:10
        }
    

    组件中状态对象(store中的state)

    {{ this.$store.state }}
    

    2.mutation
    将state通过参数形式传入,获取state中的数据并进行处理,中通过store.commit来触发状态变更。
    store下定义

    mutations:{
            increment(state){
                return state.count++;
            },
            decrement(state){
                return state.count--;
            }
        }
    

    组件中定义一个函数去接收

    methods:{
                decrease(){
                    this.$store.commit('decrement');
                }
            }
    

    3.actions
    不是必须的,需要做异步操作(网络请求)时可用到。

    actions:{
            //context参数起到承上启下的作用,直接拿到mutations中定义的函数
            actionIncrement(context){
                context.commit('increment');
            }
    

    组件中通过定义一个函数来接收

    add(){
                    this.$store.dispatch('actionIncrement');
                }
    

    当使用actions之后,mutations中的方法将通过actions来调用,而不是直接在外部访问mutation中的方法。
    调用actions中的方法:

    this.$store.dispatch
    

    注意:
    1.actions提交的是mutations,而不是直接变更状态。
    2.actions可以包含任意的异步操作。

    4.getter
    对向前状态中的值进行过滤和计算。

    getters:{
            //对state状态对象进行过滤或计算,可将state作为参数传入
            getState(state){
                return state.count>0 ? state.count : 0
            }
        }
    

    组件获取getters中的方法

    this.$store.getters
    

    5.module
    当项目中所需管理的数据较多,可将其分成几类模块进行分类管理。

    const moduleA = {
        state: {...},
        mutations:{...},
        actions:{...},
        getters:{...}
    }
    const moduleB = {
        state: {...},
        mutations:{...},
        actions:{...},
        getters:{...}
    }
    const store = new Vuex.Store({
        modules:{
            a:moduleA,
            b:moduleB
        },
        state:{...}
    })
    

    调用a中的state

    this.$store.state.a
    

    相关文章

      网友评论

          本文标题:14.vuex相关操作

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