【发布时间】:2019-04-03 14:07:11
【问题描述】:
我有一个管理数组 (state.all) 的 Vuex 存储,我有一个调用 Vuex 操作的按钮,该操作执行 HTTP 调用,然后通过突变。但是,状态永远不会更新,组件永远不会更新。
为了证明我没有发疯,我在突变内部使用了两个alert()s,以确保我知道我在代码中的位置。 alert()s 总是以正确的值触发。
这是截断的 Vuex 存储(这是一个模块):
const state = {
all: []
}
// actions
const actions = {
...
runner ({ commit, rootState }, { did, tn }) {
HTTP.post(url, payload)
.then(function (response) {
commit('setNewConversations', response.data)
})
})
}
}
const mutations = {
...
setNewConversations(state, new_conv) {
for (let new_c_i in new_conv) {
let new_c = new_conv[new_c_i]
alert(new_c) // I always see this, and it has the correct value
if (!(new_c in state.all)) {
alert('I ALWAYS SEE THIS!') // testing
state.all.push(new_c)
}
}
}
...
}
当我去测试这个时,我看到了我的两个alert()s,第一个是我期望的值,第二个是“我总是看到这个!”但是我的v-for 组件没有任何反应,并且状态永远不会更新,尽管state.all.push()。
解决此问题的下一步是什么? JS 控制台中没有错误,我无法弄清楚状态不会更新的任何原因。
谢谢!
【问题讨论】:
-
你确定它没有更新商店吗?也许由于某种原因视图没有更新?
-
现在当我删除我的
alert()时,它突然开始工作。现在这是一个偶尔发生的问题。我该怎么做才能弄清楚为什么会这样? -
你是否在浏览器中安装了
vue devtoolsextension/plugin/whatever,这是监控 vuex 状态的好方法