Vuex

是一个专为Vue.js应用程序开发的状态管理模式

状态管理模式

new Vue({
    // state
    data() {
        return {
            count: 0;
        }
    },
    // view
    template: `
        <div>{{ count }}</div>
    `,
    // actions
    methods: {
        increment() {
            this.count++
        }
    }
})
  • state:驱动应用的数据源
  • view:以声明方式将state映射到视图
  • actions:相应在view上的用户输入导致的状态变化

但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

  • 多个视图依赖于同一状态(继承)
  • 来自不同视图的行为需要改变同一状态(修改)

因此,把组件的共享状态抽取出来,以一个全局单例模式管理

Vuex安装及使用

<script src="/path/to/vue.js"></script>
<script src="/path/to/vuex.js"></script>

或者

// 命令行执行
npm install vue 
npm install vuex
// 项目中引入、安装
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// 使用
const store = new Vuex.Store({
    state: {
        count: 1,
        token: '',
    },
    mutations: {
        change(state) {
            state.count++
        },
        SET_TOKEN: (state, token) => {
          state.token = token
        },
    },
    actions: {
        commit('SET_TOKEN', response.data.token)

    }
})

console.log(store.state.count)   // 1
store.commit('change')
console.log(store.state.count)   // 2


store.dispatch('GetUserInfo')
  • state:存放共享数据
  • mutation:定义方法修改state的值
  • actions:通过dispatch分发actions,通过commit异步处理数据
  • getters:类似于vue的计算属性,用来过滤一些数据
  • modules:分模块管理

results matching ""

    No results matching ""