采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,麻烦你用两三分钟看看图片,应该就能清晰的明白我碰到的问题了。。,刚开始我以为是父子组件生命周期的原因,从mounted改成created,但最后发现并不是,所以现在特别奇怪,为啥会跳过getRoute这个方法呢?。。
第一,你在子组件 created 时打印 items 是空的,这符合预期,因此此时父组件 listRoute() 可能还未执行完成(异步的)
第二,你说最终也没渲染出来,这看起来是一个问题。需要排查。
排查的方法:你先在父、子组件的 updated 时,分别打印 items ,看能得到正确的结果吗?
我明白了,我之前一直误以为子组件是等到父组件的created(就算其中包含异步请求)全部执行完毕才会去加载,其实并不是。 原因其实是在父组件created中发起的异步请求会被挂起,等同步任务执行完后,就会去执行子组件的created,然后是mounted,当子组件的mounted执行完后,就会回到父组件,去执行在created中挂起的异步请求...对了老师,这时候是先执行mounted中的同步任务还是先执行created中挂起的异步请求呢? 我这样理解对着吗?....
当然是先执行 created 里的代码,再执行 mounted 里的代码,vue 这么定义的。但异步请求返回时,肯定会在 mounted 之后。所以你在 updated 中应该可以看到异步请求返回后的数据。
明白了,感谢双越老师,你的所有课我都买了,哈哈,很喜欢你的课
没看懂你的问题。你在created 里调用了 this.getRoute() ,那当然会跳转到 getRoute 方法啊,这不听正常的嘛?
图片可能没显示全...你点击下图片可以看到完整的图~我是在父组件中的created里调用了getRoute,按理说就算created中有异步请求,也会在异步请求返回数据之后才会去执行子组件的created。 然后问题就出现了,我在父组件中的created中调用了getRoute方法,但是在异步请求还没有返回数据的时候就跑去执行子组件的created了,导致这时候传给子组件的是一个空数组,所以这里就比较疑惑。。。 然后我找到的解决方法是给子组件加一个v-if标识符,只有等请求返回了才会去渲染子组件,但是对原因又不太清楚~ 不知道老师能明白我的意思不...
登录后可查看更多问答,登录/注册
面向1-3年前端的框架及项目面试“刚需内容”
4.1k 1
2.7k 11
1.3k 11
1.4k 11
1.2k 11