如何获得vue DevTools自动提交vuex突变?

时间:2019-08-20 11:06:14

标签: vue.js vuejs2 vuex vue-devtools

我看到了这些突变: enter image description here

但是只有当我单击向下箭头时,它们才真正生效。我如何让他们随着应用程序的进度自动提交?

2 个答案:

答案 0 :(得分:1)

向下箭头(标记为“全部提交”)仅“提交”开发工具的Vuex历史记录中的突变。通过此突变历史记录,您可以检查单个突变及其应用时的状态。这只是带有状态快照的调试工具。

单击“全部提交”即可将所有变异历史记录压缩为新的“基本状态”。换句话说,如果它太长而无法满足您的需要,它将丢弃突变历史记录。但是,这与在Vuex存储中提交突变无关。 Vuex存储区始终包含最新状态,包括所有突变。

所以我真的看不到自动单击向下箭头的意义,因为那只是调试信息,应根据需要明确控制。

答案 1 :(得分:1)

我也遇到了这种行为。我不知道这是否适用于您的问题,但是我确实找到了解决方法,因此我想在此提及它,以备将来有人使用。

任何Vuex getters都是基于Vuex实例的特定state对象计算的。 getter确定其所基于的state对象,并且仅在其所基于的state对象之一被修改时才更新。这样做是出于性能方面的考虑,因此您不必在每次更改任何状态值时都重新计算所有的吸气剂。

在我的情况下,该突变修改了初始化getter时不存在的属性。因此,Vue实例不知道该吸气剂需要更新。通过将突变重置为新的Base State,getter会认识到它确实应该基于此属性,然后在属性更改时进行反应式更新。

此问题的解决方法是从一开始就将recalcitrant属性添加到Vuex state实例中,以便getter在属性更改时进行更新。

涵盖here

由于Vue不允许动态添加根级反应性属性,因此您必须通过预先声明所有根级反应性数据属性(即使值为空)来初始化Vue实例。

还有here

理想情况下,尝试使用所有需要的字段预先初始化状态。

希望这对某人有帮助!