突然我开始从Vue收到以下TypeError警告,但我的应用程序运行正常
[Vue警告]:渲染错误:“ TypeError:无法读取null的属性'Name'”
这来自名为“ dashboard”的数据属性,该属性在用户从下拉菜单中选择一项后通过AJAX调用加载。在调试中,我能够简化代码以得到警告,并了解了如何不获得警告。
此行会给我警告,但效果很好
资讯主页:{{dashboard.Name}}
此行将显示整个仪表板对象,而不会发出警告
信息中心:{{信息中心}}
此行也可以正常运行,而不会发出警告
仪表板:{{仪表板== null? “空”:dashboard.Name}}
我正在与Vue一起做我的第一个项目,并且使这段代码在几周内都可以正常工作,没有任何警告。
为什么突然我会开始看到此警告?
第二个问题是您通常如何跟踪此类警告。堆栈跟踪全部在Vue代码中,并且让我不知道问题出在我的代码中是哪里。
答案 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填满时,它变得“真实”