老师请解答

老师请解答

对于生命周期函数 activated、deactivated

和router-links、keep-alive之间的关系不是很清楚

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,不是的。router-link只是用来设置跳转地址的,keep-alive是用来包裹组件的,不是用来包裹跳转链接的。例如前面所说的城市列表,是点击城市这个按钮跳转的,而跳转的这个具体的组件(城市列表),用keep-alive包裹。因为路由规定路,切换的组件是渲染到router-view中,即keep-alive包裹router-view。

案例中也使用到了,如下图所示。还是建议同学能够自己看视频的时候多练习,这样印象更加深刻哦~

http://img1.sycdn.imooc.com//climg/5f3278e109fa4c6f04220142.jpg
如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 慕标1234374 提问者 #1
    好的谢谢老师,忘记根实例中有用到keep-alive了,前面就是没见在哪用到就想不通
    2020-08-11 19:10:35
好帮手慕夭夭 2020-08-11 17:43:33

同学你好,问题解答如下:

1.组件之间切换会导致重新渲染,例如从组件A切换到组件B,那么组件B要重新创建并渲染到页面。也就是组件B从创建之前到渲染在页面,以及它更新会有一系列的生命周期(生命周期可复习之前课程,地址:https://class.imooc.com/lesson/1447#mid=33308)。从组件B切换到组件A,那么组件B就会销毁,下次切换的时候就会重新创建渲染。

如果每次请求都要重新渲染,从性能上考虑是不好的。keep-alive是用来缓存组件的,即把组件包裹起来,就能缓存组件,切换到其他组件时就不会被销毁了。

2.上面说了,一个组件从创建到渲染会经历一系列的生命周期。但使用了keep-alive之后,组件不会重新创建了,所以它的生命周期就失效了。取而代之的就是activate和deactivated。

activate是在被包裹组件被激活的状态下使用的生命周期钩子,deactivated是在被包裹组件停止使用时调用。

3.router-link是设置路由跳转链接的,例如有一个按钮城市,点击城市会跳转到城市链接,那么城市就可以使用router-link包裹起来,并设置具体的路由url。router-link在浏览器中会默认渲染成a标签,点击时,就会跳转到指定路由页面了。

建议同学做一做课程案例,或者下载源码去看一看,会帮助自己更好的理解。

http://img1.sycdn.imooc.com//climg/5f3268350914cd4806190132.jpg

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕标1234374 #1
    router-links、keep-alive之间是什么关系呢?使用router-link就等于组件包裹在keep-alive中吗
    2020-08-11 18:44:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师