- Базовая конфигурация vuex:
1.1 Установите пакет зависимостей vuex:
npm install vuex --save
1.2 Создайте файл store.js в каталоге src
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
})
1.3. Смонтируйте объект хранилища в экземпляр vue
import store from './store'
new Vue({
// 将创建的共享数据对象,挂载到Vue实例中
// 所有的组件就可以直接从store中获取全局数据
store,
render: (h) => h(App),
}).$mount('#app')
2. Основная концепция Vuex — состояние:
state提供唯一的公共数据源,所有的共享的数据都要统一放到Store中的state中进行储存
Если данные счетчика хранятся в состоянии
state:{
Count:0 }
2.1 Первый способ доступа к данным в состоянии:
// this.$store.state.全局数据名称
this.$store.state.Count
2.2 Второй способ доступа к данным в состоянии:
// 从vuex中按需导入mapState 函数
import {
mapState } from 'vuex'
Через импортированную функцию mapState глобальные данные, требуемые текущим компонентом, сопоставляются с вычисляемым свойством текущего компонента, и их
можно использовать непосредственно как вычисляемое свойство при его использовании.
computed: {
...mapState(['Count']),
},
3. Основная концепция vuex — мутация
В vuex нельзя напрямую манипулировать данными в хранилище, но данные в хранилище можно изменить только посредством мутации.Хотя
этот метод немного громоздок в работе, он может централизованно контролировать все изменения данных и облегчение обслуживания
3.1 Первое использование мутации:
mutations: {
// step是参数
add(state,step) {
state.Count++
},
methods: {
btnhandler1() {
// 用this.$store.commit('mutation中的函数名',参数)
//commit的作用是调用某个mutation函数
this.$store.commit('add',3)
},
},
3.2 Второе использование мутации:
// 从vuex按需导入mapMutations函数
import {
mapMutations } from 'vuex'
Через импортированную функцию mapMutations функции в необходимых мутациях сопоставляются с методами текущего компонента
methods: {
...mapMutations(['add']),
},
4. Основная концепция vuex ---- Действие:
если вы изменяете данные с помощью асинхронных операций, вы должны использовать действие вместо мутации, но в действии вам все равно нужно косвенно изменять данные, вызывая мутацию.
4.1 Первое использование действия:
addAsync(context, step) {
setTimeout(() => {
// 在actions中不能直接修改state中的数据
// 必须通过context.commit()触发某个mutation才行
context.commit('add', step)
}, 1000)
},
btnhandler4() {
// dispatch函数,专门用来触发action
this.$store.dispatch('addAsync', 5)
},
4.2 Второе использование Действия:
// 从vuex中按需导入mapActions函数
import {
mapActions} from 'vuex'
Сопоставьте функции в действиях с методом методов текущего компонента через функцию mapActions
methods: {
...mapActions(['addAsync','addNAsync']),
},
5. Основная концепция vuex - Getter
① .Getter используется для обработки данных в хранилище для формирования новых данных, аналогично свойствам расчета Vue
② Когда данные в хранилище изменяются, данные в Getter также изменяются
5.1 Getter Первое использование:
getters: {
showNum(state) {
return '当前最新的Count值为' + state.Count
}
}
//使用 this.$store.getters.名称
this.$store.getters.showNum
5.2 Второе использование:
import {
mapGetters} from 'vuex'
computed:{
...mapGetters(['showNum'])
}