关于用composition api 改写 music-list 组件的问题

来源:4-6 歌手详情页 MusicList 组件功能交互优化(03)

Elevens_regret

2021-04-13

黄老师,我把music-list组件的逻辑用 composition api的形式写了一遍,功能都实现了,但是遇到一个问题:
就是定义准备引用背景图dom的ref的时候,只能初始化成
const bgImgRef = ref({ clientHeight: 0 })
而不能初始化为
const bgImgRef = ref(null)
究其原因是因为在其他计算属性中提前引用了bgImgRef.value.clientHeight
初始化的时候 bgImgRef.value 是null的话就会报错。

请问一下老师有什么方法能写成 const bgImgRef = ref(null) 这种形式而不报错吗?

music-list.vue组件中

http://img.mukewang.com/szimg/6074717909cb284f05020064.jpg

http://img.mukewang.com/szimg/6074717909a8b3eb04370327.jpg

useStyle.js文件

http://img.mukewang.com/szimg/607471a009fb73a106421291.jpg

写回答

1回答

ustbhuangyi

2021-04-13

本质上还是你的计算属性中依赖了 DOM API,而在计算属性执行的时候 DOM 还没有初始化,你应该像课程那样,计算属性依赖响应式数据,然后这个响应式数据在 mounted 的时候赋值,这个时候可以访问到 DOM 的值。

1
2
ustbhuangyi
回复
Elevens_regret
是这样
2021-04-13
共2条回复

Vue3开发企业级音乐Web App 明星讲师带你学大厂代码

慕课网明星讲师黄轶深度讲解 Vue3.0 ,提升的不止是Vue代码能力

2223 学习 · 1002 问题

查看课程