vuex的计算属性_vue中vuex的五个属性和基本用法
时间: 2023-07-23 13:41:26 浏览: 199
Vuex是Vue.js应用程序开发的状态管理模式。它可以集中管理应用程序的所有组件的状态,并提供了一些工具来实现状态的更改和响应。Vuex包含五个核心属性,分别是state、getters、mutations、actions和modules。
1. state:状态对象,用于存储应用程序的所有状态数据。状态数据可以通过state属性中的getter方法访问。
2. getters:计算属性,用于派生状态数据并对其进行过滤、排序或转换。getters可以被其他getters调用,也可以在组件中直接访问。
3. mutations:用于修改应用程序的状态数据。mutations应该是同步的,只能通过commit方法来调用。
4. actions:用于处理异步操作和复杂的业务逻辑。actions可以调用mutations来修改状态,也可以通过dispatch方法来调用其他actions。
5. modules:用于将应用程序的状态数据模块化。每个模块都有自己的state、getters、mutations和actions,可以嵌套其他模块。
基本用法:
1. 创建store对象:
```
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
},
getters: {
doubleCount(state) {
return state.count * 2
}
}
})
export default store
```
2. 在组件中使用store:
```
<template>
<div>
<p>Count: {{ count }}</p>
<p>Double Count: {{ doubleCount }}</p>
<button @click="increment">Increment</button>
<button @click="incrementAsync">Increment Async</button>
</div>
</template>
<script>
import { mapState, mapGetters, mapActions } from 'vuex'
export default {
computed: {
...mapState(['count']),
...mapGetters(['doubleCount'])
},
methods: {
...mapActions(['incrementAsync', 'increment'])
}
}
</script>
```
阅读全文