其实核心判断条件的逻辑在于,我想判断这个 err.data.password1到底存不存在,存在的话就输出,不存在的话就跳过这段代码执行下一段。

原来的代码是这样的,如下。

else if (err.data.password1[0] !== '') {
  this.$message({
        message: err.data.password1[0],
        type: "error",
     });
  }

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '0')

然后想了想会不会是判断条件的问题,这样写是不是不太能很好地判断err.data.password1[0]是否存在,就是说,这段代码可能不能很清晰地要表达我的意图

然后我改成了这样(正规一些,自带判断存在性质

else if (err.data.password1[0]) {
  this.$message({
        message: err.data.password1[0],
        type: "error",
     });
  }

然后也还是报同样的错,我寻思,问题出在那个‘0’上面吧

于是我再把0删掉了,相当于判断err.data.password1是否存在(这样逻辑好像更清晰,更便于判断

灵光一闪,然后代码最终被我改成了这样,成功解决报错

else if (err.data.password1) {
    this.$message({
         message: err.data.password1 ? err.data.password1[0] : "",
         type: "error",
     });
}

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐