刚刚接触 vue 麻烦问一个 bug

2021-11-01 22:32:32 +08:00
 eccentric579

获取.url .pic 总是提示访问未定义对象

谢谢

2021 次点击
所在节点    Vue.js
8 条回复
wildnode
2021-11-01 22:43:02 +08:00
在 onMounted 里的请求完成之前,movielist.value[focue.value] 本身就是 undefined
相当于你在访问 undefined.pic 和 undefined.url

而且你那两行我没太看明白,是想给 picquery 和 urlquery 赋默认值么,那也应该是用 || 而不是 && 啊...
wildnode
2021-11-01 22:44:39 +08:00
不对,用 || 也不优雅,应该在 computed 中判断数据是否存在,如果不存在就返回默认值
eccentric579
2021-11-01 23:27:58 +08:00
@wildnode
用 || 和 什么都不加 ,都过不了 render
用&& 倒是可以运行
我也没想清楚为什么会这样
Vegetable
2021-11-01 23:36:17 +08:00
computed() && literal 这操作也令人费解了,这样你的 picquery 和 urlquery 究竟是啥啊,我都说不准了,吧&& 写道 computed 里边,然后?.pic 和?.url 就解决了
eccentric579
2021-11-02 01:13:18 +08:00
@wildnode

哎,我以为 axios 会阻塞的,结果和 computed() 是并行的。
突然就想通了。
谢谢
DoveAz
2021-11-02 09:33:17 +08:00
```javascript
movielist.value[focus.value]?.pic??['you','wrong']
```
gadfly3173
2021-11-02 16:13:33 +08:00
@eccentric579 axios 本来就是异步的返回 promise 呀。同步获取数据可以用 async await 把它阻塞掉,但是 mounted 这些生命周期只是钩子,只是控制执行的时间,所以在生命周期钩子里更新的数据也不会同步的。不过你既然已经知道了会有什么属性,其实可以直接给 data 设默认值的
eccentric579
2021-11-02 22:49:24 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/812271

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX