Computed 属性 依赖于另一个 computed 属性

Computed property that depends on another computed property

下面的代码产生错误 "Cannot read property 'form' of undefined":

computed: {
  boundary_limits () {
    return this.$refs.hemoBoundaryLimits.form;
  },
  high_risk_alerts () {
    return this.$refs.highRiskAlerts.form;
  },
  alerts () {
    return {
      boundary_limits: this.boundary_limits,
      high_risk_alerts: this.high_risk_alerts
    }
  }
}

然而,如果我删除 alerts(),我不会收到任何错误,我什至可以控制台记录 boundary_limitshigh_risk_alerts 成功,这意味着 $refs.hemoBoundaryLimitsthis.$refs.highRiskAlerts 定义。

所以 Vue.js 我对 alerts 的定义有问题,但我看不出有什么问题。

有什么线索吗?

错误出现是因为您试图访问计算 属性 中的 $refs。 计算属性在安装模板之前进行评估,因此 hemoBoundaryLimitsundefined.

您应该在安装的挂钩中访问 $refs

作为解决方案,您可以通过使用 @hook 事件知道何时安装组件来欺骗它:

<hemoBoundaryLimits @hook:mounted="isHemoBoundaryLimitsMounted = true" />

并在脚本中

data: () => ({
  isHemoBoundaryLimitsMounted: false
}),

computed: {
  boundary_limits () {
    if (!this.isHemoBoundaryLimitsMounted) return
    return this.$refs.hemoBoundaryLimits.form;
  }
}