1. Vuex简介1.1 什么是VuexVuex是一个专为Vue.js应用程序开发的状态管理工具。它采用了集中式存储管理应用的所有状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说,Vu...
Vuex是一个专为Vue.js应用程序开发的状态管理工具。它采用了集中式存储管理应用的所有状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说,Vuex是一个适用于在Vue项目开发时使用的状态管理工具,用于解决组件之间频繁传参导致的维护困难问题。
在使用vue-cli脚手架工具创建项目的过程中,可以手动选择安装Vuex,也可以在项目创建完成后再独立安装。以下是使用NPM和yarn安装Vuex的命令:
npm i vuex --saveyarn add vuex在模块化的打包系统中,您必须显式地通过Vue.use()来注册Vuex。
// /src/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({ state: { // 存放状态的键值对 }
})
export default store将store挂载到当前项目的Vue实例当中去:
// /main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
new Vue({ render: h => h(App), router, store
}).$mount('#app')State是存储在Vuex中的状态(数据),可以是任意类型的数据。它是Vuex中所有组件共享的数据源。
Getters可以看作是store的计算属性,用于派生出一些状态。类似于组件中的计算属性,Getters可以基于State中的数据计算出新的状态。
Mutations是更改Vuex中状态的唯一方式,是同步的。通过提交mutation来修改状态。
Actions和Mutations类似,但它是用于处理异步操作的,可以包含任意异步逻辑。Actions提交的是mutation,而不是直接变更状态。
Vuex支持将状态和变更逻辑按模块进行划分,方便管理。每个模块都有自己的State、Getters、Actions和Mutations。
在项目中创建一个store文件夹,并在其中创建index.js文件,用于创建Vuex Store。
// /src/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({ state: { count: 0 }, getters: { doubleCount: state => state.count * 2 }, mutations: { increment(state, payload) { state.count += payload } }, actions: { incrementAsync({ commit }, payload) { setTimeout(() => { commit('increment', payload) }, 1000) } }
})在组件中使用Vuex Store,可以通过this.$store访问。
// /src/components/Counter.vue
<template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> <button @click="incrementAsync">Increment Async</button> </div>
</template>
<script>
export default { computed: { count() { return this.$store.state.count } }, methods: { increment() { this.$store.commit('increment', 1) }, incrementAsync() { this.$store.dispatch('incrementAsync', 1) } }
}
</script>通过以上步骤,您已经成功掌握了Vuex的基本概念和实战应用。在实际开发中,可以根据项目需求进一步学习和探索Vuex的高级用法。