vue-cli教程(四) 组件状态共享(vuex)

vuex文档:https://vuex.vuejs.org/zh-cn/vue

vuex安装:cnpm install vuex --savevuex

简单使用:npm

    1.新建 store/index.js异步

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
const store = new Vuex.Store({
    state:{
        count:0
    },
    mutations: {
        change_count (state) {
            // 变动状态
            state.count++
        }
    },
})

export default store

1.获取属性(写在computed里)this

computed:{
    count(){
       return  this.$store.state.count
    }
}

spa

import {mapState} from  'vuex'
computed:mapState([
    'count'   //参数和state里面的参数同样
])

文档

import {mapState} from  'vuex'
computed:mapState({
  count:state=>state.count
})

状态改变(Mutations):只作状态变动it

change_count(){
    this.$store.commit("change_count")
},

io

import { mapMutations } from 'vuex'
...mapMutations({
    change_count:"change_count"  //本地触发的方法:映射的方法
})

或:function

import { mapMutations } from 'vuex'
...mapMutations([
    'change_count'
])

action方法:能够写逻辑代码,异步代码

在store/index.js

actions:{
    change_count({commit,state},context){
    //异步的耗时操做
    setTimeout( 
        function () {
             alert(state.count)
             commit("change_count") 
        },100)}
}

调用

change_count(){
       this.$store.dispatch('change_count');
},
相关文章
相关标签/搜索