UserProfile报错

来源:9-9 作业 完成文章详情页

慕工程7143520

2021-12-06

图片描述
麻烦老师看一下PostDetail的页面取值是不是存在bug 导致currentPost.author是string,给UserProfile传值的时候 会报错

写回答

2回答

张轩

2021-12-07

同学你好

这里的问题就在于

store.dispatch('fetchPost', currentId)
这个是 onMounted 时候发送的。
在发送之前对应的 Post 还没有作者的信息(数据是从 Post 列表里面拿到的,对应的 author 只有对应的 ID)
所以等于在 string 类型上取一个对象的属性 自然就报错了。
在这里我们可以多添加一个 v-if 等数据取得,author 有了这个信息再做处理

<user-profile :user="currentPost.author" v-if="typeof currentPost.author === 'object'"></user-profile>

这样修改就可以了,而且你会发现这里的类型错误也消失了,因为我们用 typeof 实现了类型守卫,类型的范围自动缩小了。

2
1
慕工程7143520
好的,我试一下,谢谢老师
2021-12-07
共1条回复

张轩

2021-12-06

同学你好 请提供给我一下你的源代码(git) 我帮你在本地调试一下 非常感谢

0
1
慕工程7143520
https://gitee.com/ye-fusen/find-bug.git 三个报错 麻烦老师都帮忙看一下 1.Uncaught SyntaxError: Identifier 'pluginnamearr' has already been declared 2.Invalid prop: type check failed for prop "user". Expected Object, got String with value "6090d803b558154f0392cc87". 3.helper.ts?aef4:27 Uncaught (in promise) TypeError: Cannot create property 'avatar' on string '6090d803b558154f0392cc87'
2021-12-06
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程