为什么在Vue中,当数组初始化并显示输出时,会出现'无法读取未定义的属性”的错误?
P粉642919823
P粉642919823 2023-08-28 23:38:03
0
1
578
<p>我有两个 vue 文件,App.vue 和一个组件UsersPage.vue。</p> <p>UsersPage.vue:</p> <pre class="brush:php;toolbar:false;"><脚本> 导出默认值{ 数据:()=>({ 用户列表:[] }), 方法:{ 异步创建用户列表(){ this.usersList =等待fetch(“https://jsonplaceholder.typicode.com/users”).then((response)=>response.json()); } }, 创建(){ this.createUsersList(); } } </脚本> <模板>
P粉642919823
P粉642919823

全部回复(1)
P粉087074897

在你的v-for中,你使用了users.address.street

当你将[1, 2]传递给usersList并且Vue通过v-for解析这些项时,它尝试读取每个数字的address.street

因为它们是数字,它们的addressundefined。当你尝试访问undefined的任何属性时,你会得到你正在遇到的错误。

注意:如果你希望你的v-for能够解析没有address的项而不抛出错误,你可以将users.address.street替换为users.address?.street
文档: nullish coalescing operator


另外,你不应该将你的迭代器命名为users,因为这可能会让你或其他需要修改该代码的开发人员对users是什么感到困惑。你应该将其命名为user(例如:v-for="user in usersList" :key="user.id")。
但这并不改变当它是一个数字时,你无法访问它的address.street属性的事实。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板