【发布时间】:2018-02-12 11:02:41
【问题描述】:
我有一个使用“data1”道具的组件。
<template>
<div>
<component1 :data='data1'><component1>
</div>
<template>
这个data1是一个计算属性,需要另一个计算数据来计算它的一个值:
computed: {
componentInfo: function() {
return this.$store.state.componentData;
}
data1: function() {
return {value1: this.componentInfo.value1, ... other values}
}
}
我的问题是组件在从存储中获取 componentInfo 之前尝试评估 data1 值(这会导致错误,因为 this.componentInfo 仍然未定义)
这种情况应该如何处理?
【问题讨论】:
-
也许为prop设置一个默认值:
props: { data: { default: null /* or default values*/ } } -
只有在需要时才应评估计算属性。您可以在另一个属性中使用计算属性,它应该可以正常工作。数据肯定在
$store中吗?仔细检查的一种方法是在您的data1方法中直接使用this.$store.state.componentData.value1。 -
您得到的确切错误是什么?在计算属性之前未初始化存储似乎极不可能。
-
@RossWilson 谢谢,你是对的。这是一个简化的示例,但我对商店中对象的确切路径有疑问。
标签: vue.js vuejs2 vue-component vuex