javascript - 如何在Vue js中处理未定义的 "Error in render: TypeError: Cannot read property ' abc'

标签 javascript vue.js vue-component

现实世界的数据通常并不像我们想象的那么结构化。我记得如果 AngularJS 模板尝试访问未定义的属性,它只会呈现一个空字符串。我非常喜欢这个默认设置。对于 Vue,一个错误就会导致整个组件无法渲染。

我读到了有关错误边界的内容,但包装可能访问未定义属性的每个元素是不现实的。

我的问题是:如何优雅地处理此类错误并自信地构建一个始终呈现的组件,即使数据错误?

最佳答案

你可以使用这样的东西:

<p>{{x?x.abc:""}}</p>

如果x未在您的数据对象中定义,这将引发冲突,但您的应用程序仍将正常运行。

解决此问题的一种方法是在您的计算对象中定义一个getter,例如x,如下所示:

{ 
  data(){
    _x:null, //or it may completely missing or an empty object {}
  },
  computed:{
    x: function(){
      return this._x?this._x:{}
    }
  }
}

现在你可以像这样使用它:

<p>{{x.abc}}</p>

关于javascript - 如何在Vue js中处理未定义的 "Error in render: TypeError: Cannot read property ' abc',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60314386/

相关文章:

javascript - 为什么在这种情况下我不能过滤本地 json 文件 (vuejs2)

javascript - 如何更新 React Hooks 中对象数组中的状态 `onChange`

javascript - 将自定义文本样式代码转换为 html

javascript - 如何从 Microsoft 更新目录网页获取更新二进制 URL?

Vue.js - 模态似乎无法在表格内工作

javascript - Vue 事件处理程序,在所有组件之间共享

javascript - html中pdf元素的滚动条样式

javascript - 如何在 Vue.js 中使用从一个钩子(Hook)到另一个钩子(Hook)的数据?

webpack - [Vue 警告] : Failed to mount component: template or render function not defined in Webpack 4

javascript - 除了计算之外的任何其他方式来存储 Vue 路由参数,使得引用无法修改