【发布时间】:2020-10-23 21:28:20
【问题描述】:
我用一个对象定义我的状态,用一些嵌套对象初始化为一个空字符串和一个空数组,如下所示:
state: {
displayedFarmer: {
name: "",
arrivalDates: []
// some more fields...
},
// more vuex stuff
}
我希望如果我console.log 显示的农夫,arrivalDates 会出现。这是我在组件中跟踪它所做的:
computed: {
...mapState([ 'displayedFarmer' ]),
// more code
},
watch: {
displayedFarmer: {
handler() {
console.log("displayedFarmer", this.displayedFarmer);
},
deep: true,
immediate: true
}
}
出现的第一条日志行显示displayedFarmer 对象,缺少arrivalDates 和名称:
displayedFarmer
Object { … }
(在控制台中展开时基本上只出现prototype 和__ob__ 对象)
我并不清楚这种行为,并迫使我在第一次访问字段时使用一种小型且无害的 hack 来初始化字段。
对于这个问题,我想知道的是:
- 为什么当我通过组件访问时看不到我在状态中初始化的对象?
- 如何以不同的方式执行此操作,以便在我第一次访问对象时初始化所有嵌套项?
【问题讨论】:
-
除非您完全修改了
displayedFarmer,否则您记录的内容应该与您在初始状态中定义的具有这些属性的对象相同。其他事情正在发生。你能提供一个可重现的例子吗? -
你提到的道具在这个demo中看起来很好
-
@tony19 - 在查看了您的演示后,我进一步研究了我的代码,发现在父组件中我正在调度一个操作来清除
displayedFarmer对象。哦,愚蠢的我!
标签: javascript vue.js vuex