请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么这里使用watch监听sliders的变化没有生效呢?

    老师你好,对于您在视频中提到的"BScoll初始话的时候需要至少一条数据,而我们的sliders是异步获取的"这一问题,老师的解决办法是使用v-if="sliders.length"来确保拿到数据之后再渲染。

   我突然想到为什么不能用watch的方式来监听sliders的变化再调用bs实例的refresh方法来解决这样的问题呢,于是我并没有写v-if, 而是写下了以下代码

https://img1.sycdn.imooc.com//szimg/60730ea809e71b9b13510866.jpg

此时奇怪的问题是,箭头处的回调函数似乎不会执行???

我又改成了如下形式

https://img1.sycdn.imooc.com//szimg/607311da094f516415090799.jpg

这次似乎watch成功了,但是新的错误又来了:

https://img1.sycdn.imooc.com//szimg/6073125a09bf8fd318410667.jpg

真的很伤脑筋,我还想问下,watch的回调函数和onMounted这个生命周期钩子函数哪个先执行啊?

正在回答 回答被采纳积分+3

2回答

ustbhuangyi 2021-04-11 23:20:51

watch 的回调函数和 onMounted 的生命周期钩子函数执行顺序没有关系,如果你 watch 里初始化,理论上这个时候一定 mounted 了,因为数据是异步的,那么你就不需要再写 onMounted 了,但是你这么写增加了代码的逻辑复杂度,没有必要,不如 v-if="sliders.length" 更直观和简单

0 回复 有任何疑惑可以回复我~
  • 至于你 watch 第一种写法不生效,参考一下这个问题的回答:http://coding.imooc.com/learn/questiondetail/229318.html
    回复 有任何疑惑可以回复我~ 2021-04-11 23:21:59
  • 提问者 慕莱坞0998854 #2
    谢谢老师!
    回复 有任何疑惑可以回复我~ 2021-04-11 23:23:07
ustbhuangyi 2021-04-11 23:16:50

//img1.sycdn.imooc.com//szimg/60731285098a181c15120194.jpg

组件调用的地方需要加一下限制,为了保证至少有一条数据。

而且 2-8 节视频已经说了这个问题了

0 回复 有任何疑惑可以回复我~
  • 提问者 慕莱坞0998854 #1
    对不起老师,我刚看到下一节说了这个。然后我修改了问题,希望老师看看。
    回复 有任何疑惑可以回复我~ 2021-04-11 23:19:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信