vue踩坑记录:属性报undefined错误问题

Gamila ·
更新时间:2024-09-20
· 1264 次阅读

目录

vue属性报undefined错误

最终解决方法

vue之各种报错问题

vue属性报undefined错误

在一个组件里,通过props传值进去对象,在控制台打印报错误信息,提示某属性不存在。

例如:

<div>{{data.param.aaa}}</div>

类似这种的,取对象子级下面的值,就报了undefined。

原因应该是在初始传值,最多默认 data={}。

我尝试在props里设置好默认值,但是依然报错

这么设置的props:

props:{     data:Object,     default:function(){        return {              param:''         }     } }

这么设置,依然报错。 这个报错,应该是在父组件初始化了 data={}导致的。

最终解决方法 <div v-if="data.param">{{data.param.aaa}}</div>

加一个if判断,就可以了。

vue之各种报错问题

1 、undefined is not iterable!或者null is not iterable!"

null和undefine是不可以拿来循环的,拿来循环就会报上面这个错误,循环的时候判断一下,不为null或者undefine的时候再拿来循环就可以了~~

2、Duplicate keys detected: ‘funs1’. This may cause an update error.

原因: key值不唯一

解决: 仔细检查是否用了同一个数据循环且:key值相同,如果相同给第二个key随便加一个标记就可以,如下:

:key=“index + ‘-only’”

3、报错内容:Maximum call stack size exceeded

这个一般都是路由的堆栈溢出的原因

说白了就是你写了死循环。

比如我的这个代码哈:

/** *ifManager 是否是管理员 *str 是否有用户信息 *在路由跳转之前判断是否是管理员或者是否有用户信息,如果没有就跳转到login页面 */ router.beforeEach((to, from, next) => { if (ifManager || str) { next() } else { next(false); router.push('/login') } }) /** *乍一看好像没有什么问题,但是一运行就会出现上面的那个错误,为什么呢。因为当我们跳到login页面的时候,依旧会判断是否是管理员或者是否有用户信息,就陷入了一个死循环。 * */

解决办法就是:判断条件改一下就可以了

fManager || str|| to.path == '/login'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



VUE undefined 属性

需要 登录 后方可回复, 如果你还没有账号请 注册新账号