动态组件:(component)
有的时候,我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使用动态组件。
component 标签的 is属性语法:is后跟组件的变量名决定使用哪个组件来渲染
-
<component is="Sinabox"></component>==><Sinabox/>:如果没有绑定组件,就会当做一个标签 -
<component v-bind:is="mycomponent"></component>
注意: is是组件名 :is是data中的变量中保存的组件名
注意:我们发现切换组件,刚刚在组件内做的一切操作都消失了,点击该组件又变为了初始化的组件,这是因为。点击了其它组件,该组件就会销毁,再一次点击时,重新创建该组件。
缓存组件(keep-alive)
动态组件的切换,切换后是不会缓存之前被切换掉的组件的,每次切换新组件的时候,Vue 都创建了一个新的组件对象。 有时候我们希望在A组件时用户做了一些操作,切换B组件时做了一些操作,当切回A组件时希望记住A的操作,不要重新创建A组件,keep-alive可以缓存动态切换的组件。
-
默认:全部加载过的组件就会缓存 -
include:指定哪些组件会缓存(也可以使用正则表达式,只要是符合正则的组件名都会被缓存) -
exclude:哪些组件不会被缓存 -
max:可以缓存最近切换过的组件最大组件数(就是只能缓存最近切换过的max个组件)
如果想在缓存组件中做网络请求,我们就会发现在生命周期函数中是无法做网络请求的,这个时候就有两个函数(钩子):
-
activated(){代码}当切换到缓存组件时,里面的代码就会触发 -
deactivated(){代码}当切换到其它组件时(离开该组件时),里面的代码就会触发
注意:这两个组件必须在缓存组件中,才可以起作用。