vue keepalive作用,vue中keepalive的用法优缺点

  vue keepalive作用,vue中keepalive的用法优缺点

  vue中提供了keep-alive组件来缓存状态。本文主要介绍vue中keep-alive组件的功能和用法的相关信息。有需要的可以参考一下。

  

前言

  面试的时候,很多面试官再问他的时候可能会提到vue。你知道keep-alive有什么作用吗?

  Keep-alive是vue内置的一个组件,这个组件的作用是缓存不活动的组件。我们可以知道,一般来说,当一个组件被切换时,它会被默认销毁。如果有需要,如果一个组件被切换,它不会被销毁,但会保存它以前的状态,那么可以使用keep-alive。

  Keep-alive是Vue的内置组件,可以在组件切换过程中保持内存中的状态,防止DOM被重复渲染。

  当keep-alive包装动态组件时,它缓存不活动的组件实例,而不是销毁它们。与transition类似,keep-alive是一个抽象组件:它本身不呈现DOM元素,也不出现在父组件链中。

  在这里,当我用scaffolding创建一个项目时,home和about这两个组件将通过routing生成和切换。

  

home组件

  模板

  div class=home

  输入类型=文本

  /div

  /模板

  脚本

  //@是/src的别名

  从“@/components/HelloWorld.vue”导入HelloWorld

  导出默认值{

  姓名:家,

  组件:{

  编译

  }

  }

  /脚本

  我在home组件中写了一个输入输入框。

  

about组件

  模板

  div class="关于"

  输入类型=文本

  /div

  /模板

  脚本

  导出默认值{

  名称:“关于”

  }

  /脚本

  同样的about组件也有一个输入框。

  当我们在home组件的输入框中输入一些内容,然后切换到about组件。当我们切换回home组件时,我们会发现之前输入的内容已经被清除。其实很好理解,就是当我们切换到about build的时候,home组件被破坏了,输入框的值自然就被清空了。

  我在home组件中编写了销毁的生命周期函数。

  当您切换到“关于”组件时,会触发home组件的销毁,因此home组件会被销毁。

  然后,我们可以使用保活组件来包装路由器视图组件,并缓存非活动组件。

  

App组件

  模板

  div id=应用程序

  div id=nav

  路由器链接到=/ Home/路由器链接

  路由器链接到=/about about/路由器链接

  /div

  点火电极

  路由器-视图/

  /保持活力

  /div

  /模板

  写完后你会发现,当你切换到about组件时,home组件中的destroyed没有被触发,home组件的值被保存。

  但这肯定不好。我们会发现about组件的值也被缓存,即所有路由组件都被缓存,严重浪费性能,不符合要求。我们现在只想缓存home组件。

  保持活动有两个属性

  或者字符串正则表达式。只有匹配的组件才会被缓存。

  包含值为字符串或正则表达式匹配的组件名将被缓存。

  排除值为字符串或正则表达式匹配的组件名不会被缓存。

  首先,使用include实现,匹配组件中定义的名称,并缓存它。

  保持活动包括=home

  路由器-视图/

  /保持活力

  我们会发现home已经被缓存了,而about还没有。

  而exclude是被排除的,所以这个就不演示了。很简单。除此之外,我们还可以通过使用路由中的meta属性来控制它。

  {

  路径:“/”,

  姓名:家,

  元:{

  keepAlive:真

  },

  组件:主页

  }

  将home的路由规则clock的meta添加到keepAlive属性为true,即应该缓存当前的路由组件。

  保活代码可以与v-if结合包装。如果meta中的keepAlive为true,则缓存,no端不缓存,这样更灵活。

  点火电极

  router-view v-if= $ route . meta . keepalive /

  /保持活力

  路由器-查看v-if=!$route.meta.keepAlive /

  这样的组件缓存是实现了,但是还是会有一些问题,就是因为组件是缓存的而不是销毁的,所以组件在切换的时候不会重新创建,自然也不会调用created之类的生命周期函数,所以要用activated和deactivated来获取当前组件是否活动。

  我在home组件中编写了激活和停用的生命周期函数。

  已激活(){

  Console.log(哎呀,看到我了)

  console.log( - activated -)

  },

  停用(){

  console . log(‘该死!你又走了’)

  console.log( -已停用-)

  }

  相信通过上面的gif图你能看清楚。这个时候keep-Alive就差不多了。

  

总结

  关于vue中keepAlive组件的功能和用法的这篇文章到此为止。关于在vue中使用keepAlive组件的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: