老师在写keep-alive的时候为什么不在home.vue里写

老师在写keep-alive的时候为什么不在home.vue里写

​老师在写keep-alive的时候为什么不在home.vue里写而是写在了app.vue的<router-view>的外层,

我在写detail.vue的时候因为缓存一直不出效果,我就把keep-alive先删了,这样会有影响么

正在回答

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

1回答

同学你好,解答如下:

1、使用keep-alive缓存组件时,要保证keep-alive组件本身不重新渲染;在这个前提下,它所包裹的组件切换时,才能使用缓存:

http://img1.sycdn.imooc.com//climg/6040a40c09b8526b04890311.jpg

如果将keep-alive写在home.vue中,切换路由时,整个home.vue组件会重新渲染,此时home.vue中的keep-alive也会重新渲染一份,即keep-alive重新生成了,它记录的子组件的信息也就没了,所以无法起到缓存作用。

而将keep-alive包裹<router-view>外面,相当于home.vue组件是它的子组件,此时切换路由时,keep-alive不会重新渲染,所以它能记住home.vue之前的状态,因此能使用缓存:

http://img1.sycdn.imooc.com//climg/6040a508092e901b07240141.jpg

2、删除keep-alive不会影响效果。

另外,不正确使用keep-alive可能会影响页面渲染,所以本项目中,如果想使用keep-alive,建议把keep-alive包裹在<router-view>外面。

祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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