我收到TypeError警告,但该应用正常运行

时间:2018-07-23 19:26:26

标签: vuejs2

突然我开始从Vue收到以下TypeError警告,但我的应用程序运行正常

  

[Vue警告]:渲染错误:“ TypeError:无法读取null的属性'Name'”

这来自名为“ dashboard”的数据属性,该属性在用户从下拉菜单中选择一项后通过AJAX调用加载。在调试中,我能够简化代码以得到警告,并了解了如何不获得警告。

此行会给我警告,但效果很好

  

资讯主页:{{dashboard.Name}}

此行将显示整个仪表板对象,而不会发出警告

  

信息中心:{{信息中心}}

此行也可以正常运行,而不会发出警告

  

仪表板:{{仪表板== null? “空”:dashboard.Name}}

我正在与Vue一起做我的第一个项目,并且使这段代码在几周内都可以正常工作,没有任何警告。

为什么突然我会开始看到此警告?

第二个问题是您通常如何跟踪此类警告。堆栈跟踪全部在Vue代码中,并且让我不知道问题出在我的代码中是哪里。

1 个答案:

答案 0 :(得分:0)

Vue团队在其论坛here的回答中对此进行了解释。我将在下面重复一个较短的版本,因为花了一段时间才让它陷入沉思。

当Vue进行渲染并且数据状态尚未完成时,将发出TypeError,在我的情况下,异步AJAX调用尚未设置数据。当AJAX调用确实返回时,数据反应性开始,并且渲染再次完成,这次数据处于有效状态。

这说明了为什么下面的代码有TypeError却呈现得很好

  

资讯主页:{{dashboard.Name}}

TypeError是因为Vue尝试渲染null.Name在初始渲染时即仪表板最初设置为null。在AJAX调用返回后,现在将设置仪表板,并启动Vue反应性,第二次渲染将按预期进行。

以下内容不会发出TypeError警告,因为访问\ rendering null

  

信息中心:{{信息中心}}

在没有任何渲染的情况下有效,因此在AJAX调用返回反应性之后,没有TypeError会导致重新渲染,从而按预期显示数据。

决议,摘自上述帖子。

通常来说,您将在组件周围放置条件渲染,或者在可能需要使用v-if语句触发真实表达式的信息的数据周围放置条件渲染。 null为“ false”。当ajax填满时,它变得“真实”