16:58
# Store - 状态管理
# 简介
Vuex
是一个专为 Vue.js
应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,同样uni-app
也支持Vuex
- 支持模块生成,getters、state、mutations、actions一键生成
- 支持持久化数据存储
- 支持state更新、重置、清空
# 三个重要的类及方法
- Store: 封装了部分常用方法类,commit、dispatch、set、get等,详细见下文
- StoreModule: 模块生成器类,内部使用namespace命名空间区分
- useStore: 使用Store
使用注意事项
- 必须按照模块划分vuex
- 为便于开发使用vuex,建议统一使用本Store生成器
- 尽量不要部分使用自己创建的store,同时又使用了本Store,会冲突
# 如何使用Store
创建store/index.js
,使用默认的状态管理
import Vue from 'vue'
import Vuex from 'vuex'
import { useStore } from '@anyup/uniui'
Vue.use(Vuex)
export default new Vuex.Store({
modules: useStore.modules(),
getters: useStore.getters()
})
</script>
# 默认状态
注意
- 使用本Store,会默认集成了部分状态,不可删除,如下
- 如果需要拓展,可按照规范进行追加
名称 | 类型 | 说明 |
---|---|---|
user | Object | 一般作为存储用户数据,持久化存储 |
token | Object | 用户token,持久化存储 |
bundle | Object | 页面携带信息 |
loading | Boolean | 加载框是否显示 |
toast | Object | toast显示信息 |
# 如何获取状态
- useStore自动获取声明的state并生成了getters,使用mixin全局混入到页面中,可直接获取使用
- 为避免声明重复,所有的getters会自动追加g_,所以获取的时候须注意,如下示例
<template>
<view></view>
<view>{{ g_user }}</view>
<view>{{ g_token }}</view>
<view>{{ g_bundle }}</view>
<view>{{ g_loading }}</view>
<view>{{ g_toast }}</view>
</view>
</template>
<script>
export default {
data() {
return {}
}
}
</script>
# 如何新增Vuex模块
store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import { useStore, StoreModule, Store } from '@anyup/uniui'
Vue.use(Vuex)
const store = new Store()
// userinfo为持久化存储
const modules = {
user: new StoreModule(
{ userinfo: store.getStorage('userinfo', {}), nickname: '' },
['userinfo']),
}
export default new Vuex.Store({
modules: useStore.modules(modules),
getters: useStore.getters(modules)
})
</script>
← Plus - 真机类 Tips - 提示 →