Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuex:为什么嵌套对象保持未定义状态,即使在状态下初始化也是如此?_Javascript_Vue.js_Vuex - Fatal编程技术网

Javascript Vuex:为什么嵌套对象保持未定义状态,即使在状态下初始化也是如此?

Javascript Vuex:为什么嵌套对象保持未定义状态,即使在状态下初始化也是如此?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我用一个对象定义我的状态,用一些嵌套对象初始化为空字符串和空数组,如下所示: 状态:{ 显示农民:{ 姓名:“, 到达日期:[] //还有一些领域。。。 }, //更多vuex的东西 } 我希望如果我console.log显示的农民,arrivalDates会出现。以下是我在我的组件中跟踪它所做的工作: 计算:{ …mapState(['displayedFarmer']), //更多代码 }, 观察:{ 显示农民:{ handler(){ log(“displayedFarmer”,this

我用一个对象定义我的状态,用一些嵌套对象初始化为空字符串和空数组,如下所示:

状态:{
显示农民:{
姓名:“,
到达日期:[]
//还有一些领域。。。
},
//更多vuex的东西
}
我希望如果我
console.log
显示的农民,
arrivalDates
会出现。以下是我在我的组件中跟踪它所做的工作:

计算:{
…mapState(['displayedFarmer']),
//更多代码
},
观察:{
显示农民:{
handler(){
log(“displayedFarmer”,this.displayedFarmer);
},
深:是的,
立即:对
}
}
出现的第一个日志行显示了
displayedFarmer
对象,其中
arrivalDates
和名称缺失:

displayedFarmer 
Object { … }
(当我在控制台中展开它时,基本上只显示
原型
对象)

这种行为对我来说并不清楚,并迫使我在第一次访问字段时使用一种小而无害的黑客来初始化字段

对于这个问题,我想知道的是:

  • 当我通过组件访问对象时,为什么我看不到在我的状态下初始化的对象
  • 如何以不同的方式执行此操作,以便在首次访问对象时初始化所有嵌套项
  • watch
    使用
    immediate:true
    在组件
    hook:created
    之前激发。这可能是您无法访问初始化对象的原因
  • 我不知道你想达到什么目的,你能扩大你的问题吗
  • 我想到的第一件事是尝试调用
    hook:mouted
    上的
    方法(它可以做任何你想做的事情)。然后在watcher中调用相同的方法,但使用
    immediate:false
    (这是默认的btw)
  • watch
    使用
    immediate:true
    在组件
    hook:created
    之前激发。这可能是您无法访问初始化对象的原因
  • 我不知道你想达到什么目的,你能扩大你的问题吗
  • 我想到的第一件事是尝试调用
    hook:mouted
    上的
    方法(它可以做任何你想做的事情)。然后在watcher中调用相同的方法,但使用
    immediate:false
    (这是默认的btw)

  • 除非您完全修改了
    displayedFarmer
    ,否则您记录的对象应该与您在初始状态中定义的属性相同。还有别的事情。你能提供一个可复制的例子吗?你提到的道具在@tony19中看起来很好-在看了你的演示后,我进一步挖掘了我的代码,发现在父组件中,我正在发送一个操作来清除
    displayedFarmer
    对象。哦,我真傻!除非您完全修改了
    displayedFarmer
    ,否则您记录的对象应该与您在初始状态中定义的属性相同。还有别的事情。你能提供一个可复制的例子吗?你提到的道具在@tony19中看起来很好-在看了你的演示后,我进一步挖掘了我的代码,发现在父组件中,我正在发送一个操作来清除
    displayedFarmer
    对象。哦,我真傻!对于这个问题的范围,我唯一想做的就是理解为什么我看不到包含所有嵌套对象的对象。但既然你问了,这是另一个问题()的继续,我试图在vuex中使用vuetify日期选择器。主要的问题是,如果我给它一个不是数组的v模型(或绑定一个值),日期选择器将不会装载。我问题中的watch只是一个调试工具,而不是我试图实现的。在这个问题的范围内,我唯一想要实现的是理解为什么我看不到包含所有嵌套对象的对象。但既然你问了,这是另一个问题()的继续,我试图在vuex中使用vuetify日期选择器。主要的问题是,如果我给它一个不是数组的v模型(或绑定一个值),日期选择器将不会装载。我的问题中的手表只是一个调试工具,而不是我想要实现的