【发布时间】:2020-02-13 16:50:35
【问题描述】:
我正在构建一个原型模块来了解 Vuex 并遇到了一个看似简单的问题——我在使用 Map 作为我的状态变量之一时遇到了麻烦。
我想使用 Vuex 跨多个模块存储一些基本的用户首选项,并认为Map 是一种简单的方法,因为首选项可以作为简单的键/值对处理.但我要么没有正确定义Map,要么在突变中没有正确使用它。
<script lang="ts">
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
userSettings: Map,
},
mutations: {
addUserSetting(state, payload) {
if (state.userSettings == null) {
state.userSettings = new Map();
}
state.userSettings.set(payload.key, payload.value);
}
},
})
</script>
我愿意使用另一个对象,我从一组 UserPref 对象开始,但结果也不顺利。
【问题讨论】:
-
我不相信 Vue 2 对
Map或Set的反应性有任何支持。这并不意味着它们不能被使用,但它们不会响应变化。你没有提供足够的细节来说明你必须知道这是否相关的问题的性质。 -
抱歉,我更新了问题以包含具体的错误消息。
-
哦,我明白了,这是 TypeScript 错误,而不是 Vue 错误。我不知道任何 TypeScript,但有点谷歌搜索让我觉得你可能需要将
userSettings: Map更改为其他内容,可能是userSettings: new Map()。目前您将Map构造函数分配为userSettings的初始值。
标签: dictionary state vuex