状态管理 Vuex
window 全局管理数据
- 将
type类型放置在custom.d.ts中 - 使用
model数据管理模型封装在一个对象当中。分别管理fetch create save update remove - 在
main.ts中获取数据xxx.fetch - 组件间直接将数据等于
window.xxx
将 window 对象迁移到 store 文件中
实现之后整个对象封装在Stroe里面
将 model 合并在 store 文件当中
小技巧
Stroe 没有返回值,不能返回失败结果
state [data / this]
mutations [state payload]
使用 Computed 获取数据
store.commit 没有返回值,在 state 里面添加返回值
使用前技巧
- Vue.use(Vuex)
- Mian.ts => 初始化 new Vue
Mixin 与 Stroe
Mixin
// 独立组件,需使用官方插件
import Vue from 'vue';
import Component from 'vue-class-component';
@Component
export class TagHelper extends Vue {
createTag() {...}
}
<!-- .Vue 文件引用,不需要添加函数 -->
<template>
<Button class="createTag" @click="createTag">新建标签</Button>
</template>
<script lang="ts">
import { Component } from 'vue-property-decorator'
import { mixins } from 'vue-class-component'
import { TagHelper } from '@/mixin/TagHelper'
@Component
export default class Labels extends mixins(TagHelper) {}
</script>
Vuex Store
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {},
mutations: {
createTag(name: string) {
this.commit('save', { id: '1', name: 'good' })
},
save(state, payload: { id: string; name: string }) {
const { id, name } = payload
}
},
actions: {},
modules: {}
})
Vuex 使用注意点
Stroe没有返回值,不能返回失败结果,可通过更新state来获取值- 注意
this对象的不同,在store内部,通过state来表示vue Vue文件内需使用Computed来获取数据get myData(){ return this.$stroe.state.myData }