【问题标题】:Stop null warnings for properties during render在渲染期间停止属性的空警告
【发布时间】:2018-07-12 07:52:24
【问题描述】:

我有一个组件来呈现它的模板,例如一个看起来像这样的跨度:

<span>{{item.name}}</span>

项目作为属性传入:

props: {
        item: null
    },

当组件第一次挂载时,item 为空,所以当渲染发生时,我会在日志中得到这个:

[Vue 警告]:渲染错误:“TypeError:无法读取属性‘名称’ 为空”

如果我创建一个这样的计算属性:

computed: {
        name() {
            if (this.item != null) {
                return this.item.name
            }
        }
    },

然后将 name 而不是 item.name 放在渲染中它工作正常,但是有没有办法告诉 Vue 停止抱怨子属性为空,因为它似乎不关心根属性为空?

也许@LinusBorg 知道?

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:

    这不是 Vue 特定的。 Vue 只是警告你你有一个 javascript TypeError。导致错误是因为您无法在 javascript 中访问 null 值的属性。

    我只是将 item 属性的默认值设置为空对象,而不是 null

    props: {
      item: { type: Object, default: () => ({}) }
    }
    

    【讨论】:

    • 所以以前我在父级中将值初始化为 null 例如在父级的数据块中它会是:data: { item: null } 所以我应该把它切换到:data: { item: {} } 或者有更好的方法吗?谢谢!
    • 如果你在组件的模板中引用了item 的属性,我仍然会将默认值设置为空对象,以防万一。
    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2019-02-20
    • 2021-11-27
    • 2022-10-09
    • 2021-12-23
    • 2020-06-22
    相关资源
    最近更新 更多