我在 Vuex 有一个空状态的商店
const state = {
data: {
}
};
Run Code Online (Sandbox Code Playgroud)
以及用于测试更改值或添加新数据的简单突变
const mutations = {
changeOrAdd(state, {key,value}) {
state.data[key] = value;
}
};
Run Code Online (Sandbox Code Playgroud)
如果我提交到changeOrAdd,它会被添加到状态但它没有反应性。
我做了一个简单的技巧来改变默认值
const state = {
data: {
change: 0
}
};
Run Code Online (Sandbox Code Playgroud)
在突变中:
const mutations = {
changeValueAttr(state, {
key,
value
}) {
state.data[key] = value;
state.data.change++;
}
};
Run Code Online (Sandbox Code Playgroud)
每次我更改或添加新值时,它看起来都像是一种反应性。
但是,有没有一种方法可以在没有“默认”变量和没有这个愚蠢技巧的情况下做到这一点?
要在商店 vue 中添加新数据并使其具有反应性?
谢谢
Psi*_*dom 10
由于您的密钥最初未在数据中声明,Vue因此无法跟踪更改。您需要使用Vue.set来被动地添加属性,请参阅更改检测警告:
import Vue from 'vue'
const mutations = {
changeOrAdd(state, {key, value}) {
Vue.set(state.data, key, value)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |