请稍等 ...
×

采纳答案成功!

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

双越老师,麻烦帮我看看这个是啥原因啊

老师,麻烦你用两三分钟看看图片,应该就能清晰的明白我碰到的问题了。。,刚开始我以为是父子组件生命周期的原因,从mounted改成created,但最后发现并不是,所以现在特别奇怪,为啥会跳过getRoute这个方法呢?。。
图片描述

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

2回答

双越 2021-06-05 17:58:27

第一,你在子组件 created 时打印 items 是空的,这符合预期,因此此时父组件 listRoute() 可能还未执行完成(异步的)

第二,你说最终也没渲染出来,这看起来是一个问题。需要排查。

排查的方法:你先在父、子组件的 updated 时,分别打印 items ,看能得到正确的结果吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 菜卷_ #1
    我明白了,我之前一直误以为子组件是等到父组件的created(就算其中包含异步请求)全部执行完毕才会去加载,其实并不是。
    原因其实是在父组件created中发起的异步请求会被挂起,等同步任务执行完后,就会去执行子组件的created,然后是mounted,当子组件的mounted执行完后,就会回到父组件,去执行在created中挂起的异步请求...对了老师,这时候是先执行mounted中的同步任务还是先执行created中挂起的异步请求呢?
    我这样理解对着吗?....
    回复 有任何疑惑可以回复我~ 2021-06-05 18:12:20
  • 双越 回复 提问者 菜卷_ #2
    当然是先执行 created 里的代码,再执行 mounted 里的代码,vue 这么定义的。但异步请求返回时,肯定会在 mounted 之后。所以你在 updated 中应该可以看到异步请求返回后的数据。
    回复 有任何疑惑可以回复我~ 2021-06-06 14:22:14
  • 提问者 菜卷_ 回复 双越 #3
    明白了,感谢双越老师,你的所有课我都买了,哈哈,很喜欢你的课
    回复 有任何疑惑可以回复我~ 2021-06-07 20:18:18
双越 2021-06-05 10:11:45

没看懂你的问题。你在created 里调用了 this.getRoute() ,那当然会跳转到 getRoute 方法啊,这不听正常的嘛?

0 回复 有任何疑惑可以回复我~
  • 提问者 菜卷_ #1
    图片可能没显示全...你点击下图片可以看到完整的图~我是在父组件中的created里调用了getRoute,按理说就算created中有异步请求,也会在异步请求返回数据之后才会去执行子组件的created。
    
    然后问题就出现了,我在父组件中的created中调用了getRoute方法,但是在异步请求还没有返回数据的时候就跑去执行子组件的created了,导致这时候传给子组件的是一个空数组,所以这里就比较疑惑。。。
    
    然后我找到的解决方法是给子组件加一个v-if标识符,只有等请求返回了才会去渲染子组件,但是对原因又不太清楚~
    
    不知道老师能明白我的意思不...
    回复 有任何疑惑可以回复我~ 2021-06-05 10:19:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信