Vue——动态组件(component)、缓存组件(keep-alive)

370 阅读2分钟

动态组件:(component

有的时候,我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使用动态组件。

component 标签的 is属性语法:is后跟组件的变量名决定使用哪个组件来渲染

  1. <component is="Sinabox"></component>==><Sinabox/>:如果没有绑定组件,就会当做一个标签

  2. <component v-bind:is="mycomponent"></component>

注意: is是组件名 :isdata中的变量中保存的组件名

image.png

注意:我们发现切换组件,刚刚在组件内做的一切操作都消失了,点击该组件又变为了初始化的组件,这是因为。点击了其它组件,该组件就会销毁,再一次点击时,重新创建该组件。

缓存组件(keep-alive

动态组件的切换,切换后是不会缓存之前被切换掉的组件的,每次切换新组件的时候,Vue 都创建了一个新的组件对象。 有时候我们希望在A组件时用户做了一些操作,切换B组件时做了一些操作,当切回A组件时希望记住A的操作,不要重新创建A组件,keep-alive可以缓存动态切换的组件。

  1. 默认:全部加载过的组件就会缓存

  2. include:指定哪些组件会缓存(也可以使用正则表达式,只要是符合正则的组件名都会被缓存)

  3. exclude:哪些组件不会被缓存

  4. max:可以缓存最近切换过的组件最大组件数(就是只能缓存最近切换过的max个组件)

image.png

如果想在缓存组件中做网络请求,我们就会发现在生命周期函数中是无法做网络请求的,这个时候就有两个函数(钩子):

  • activated(){代码}当切换到缓存组件时,里面的代码就会触发

  • deactivated(){代码}当切换到其它组件时(离开该组件时),里面的代码就会触发

注意:这两个组件必须在缓存组件中,才可以起作用。