动态组件
通过使用保留的 <component>
元素,动态地绑定到它的 is
特性,可以让多个组件使用同一个挂载点,并动态切换:
<div id="app6"> <select v-model="currentComponent"> <option value="home">home</option> <option value="post">post</option> <option value="about">about</option> </select> <component :is="currentComponent"></component> </div> <script> new Vue({ el: '#app6', data: { currentComponent: 'home' }, components: { home: { template: `<header>这是home组件</header>` }, post: { template: `<header>这是post组件</header>` }, about: { template: `<header>这是about组件</header>` } } }) </script>
也可以直接绑定到组件对象上:
var Home = { template: `<header>这是home组件</header>` } new Vue({ el: '#app6', data: { currentComponent: Home } })
保留切换出去的组件,避免重新渲染
如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个 keep-alive
指令参数:
<keep-alive> <component :is="currentComponent"> <!-- 非活动组件将被缓存! --> </component> </keep-alive>