Vue中动态组件使用方法总结示例有哪些?

更新于
2026-09-27 03:09:58
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1268个文字,预计阅读时间需要6分钟。

Vue中动态组件使用方法总结示例有哪些?

原文:本文字例讲述了vue+动态组件用法。分享给大众供应商参考,具体如下:+通过使用保留的component元素,动态绑定到它的is特性,我们可以让多个组件可以使用同一个挂载点,并进行动态切换。

改写后:通过保留的`component`元素,将其`is`属性动态绑定,实现多个组件共享同一挂载点,并可进行动态切换。

本文实例讲述了vue 动态组件用法。分享给大家供大家参考,具体如下:

通过使用保留的<component>元素,动态地绑定到它的is特性,我们让多个组件可以使用同一个挂载点,并动态切换。根据v-bind:is="组件名" 中的组件名去自动匹配组件,如果匹配不到则不显示。

改变挂载的组件,只需要修改is指令的值即可。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <component v-bind:is="which_to_show"></component> </div> <script> // 创建根实例 new Vue({ el: '#app', data:{ which_to_show:'first' }, methods:{ toShow:function(){ var arr = ["first","second","third"]; var index = arr.indexOf(this.which_to_show); if(index<2){ this.which_to_show = arr[index+1]; }else{ this.which_to_show = arr[0]; } } }, components:{ first:{ template:'<div>这是子组件1<div>' }, second:{ template:'<div>这是子组件2<div>' }, third:{ template:'<div>这是子组件3<div>' }, } }) </script> </body> </html>

Vue中动态组件使用方法总结示例有哪些?

#keep-alive

动态切换掉的组件(非当前显示的组件)是被移除掉了,如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个keep-alive指令参数:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <!----或者<component v-bind:is="which_to_show" keep-alive></component>也行-----> <keep-alive> <component v-bind:is="which_to_show" ></component> </keep-alive> </div> <script> // 创建根实例 new Vue({ el: '#app', data:{ which_to_show:'first' }, methods:{ toShow:function(){ var arr = ["first","second","third"]; var index = arr.indexOf(this.which_to_show); if(index<2){ this.which_to_show = arr[index+1]; }else{ this.which_to_show = arr[0]; } console.log(this.$children); } }, components:{ first:{ template:'<div>这是子组件1<div>' }, second:{ template:'<div>这是子组件2<div>' }, third:{ template:'<div>这是子组件3<div>' }, } }) </script> </body> </html>

说明:

初始情况下,vm.$children属性中只有一个元素(first组件),

点击按钮切换后,vm.$children属性中有两个元素,

再次切换后,则有三个元素(三个子组件都保留在内存中)。

之后无论如何切换,将一直保持有三个元素。

actived钩子

可以延迟执行当前的组件。

具体用法来说,activate是和template、data等属性平级的一个属性,形式是一个函数,函数里默认有一个参数,而这个参数是一个函数,执行这个函数时,才会切换组件。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <!----或者<component v-bind:is="which_to_show" keep-alive></component>也行-----> <keep-alive> <component v-bind:is="which_to_show" ></component> </keep-alive> </div> <script> // 创建根实例 var vm = new Vue({ el: '#app', data: { which_to_show: "first" }, methods: { toShow: function () { //切换组件显示 var arr = ["first", "second", "third", ""]; var index = arr.indexOf(this.which_to_show); if (index < 2) { this.which_to_show = arr[index + 1]; } else { this.which_to_show = arr[0]; } console.log(this.$children); } }, components: { first: { //第一个子组件 template: "<div>这里是子组件1</div>" }, second: { //第二个子组件 template: "<div>这里是子组件2,这里是延迟后的内容:{{hello}}</div>", data: function () { return { hello: "" } }, activated: function (done) { //执行这个参数时,才会切换组件 console.log('hhh') var self = this; var startTime = new Date().getTime(); // get the current time //两秒后执行 while (new Date().getTime() < startTime + 2000){ self.hello='我是延迟后的内容'; } } }, third: { //第三个子组件 template: "<div>这里是子组件3</div>" } } }); </script> </body> </html>

当切换到第二个组件的时候,会先执行activated钩子,会在两秒后显示组件2.起到了延迟加载的作用。

希望本文所述对大家vue.js程序设计有所帮助。

本文共计1268个文字,预计阅读时间需要6分钟。

Vue中动态组件使用方法总结示例有哪些?

原文:本文字例讲述了vue+动态组件用法。分享给大众供应商参考,具体如下:+通过使用保留的component元素,动态绑定到它的is特性,我们可以让多个组件可以使用同一个挂载点,并进行动态切换。

改写后:通过保留的`component`元素,将其`is`属性动态绑定,实现多个组件共享同一挂载点,并可进行动态切换。

本文实例讲述了vue 动态组件用法。分享给大家供大家参考,具体如下:

通过使用保留的<component>元素,动态地绑定到它的is特性,我们让多个组件可以使用同一个挂载点,并动态切换。根据v-bind:is="组件名" 中的组件名去自动匹配组件,如果匹配不到则不显示。

改变挂载的组件,只需要修改is指令的值即可。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <component v-bind:is="which_to_show"></component> </div> <script> // 创建根实例 new Vue({ el: '#app', data:{ which_to_show:'first' }, methods:{ toShow:function(){ var arr = ["first","second","third"]; var index = arr.indexOf(this.which_to_show); if(index<2){ this.which_to_show = arr[index+1]; }else{ this.which_to_show = arr[0]; } } }, components:{ first:{ template:'<div>这是子组件1<div>' }, second:{ template:'<div>这是子组件2<div>' }, third:{ template:'<div>这是子组件3<div>' }, } }) </script> </body> </html>

Vue中动态组件使用方法总结示例有哪些?

#keep-alive

动态切换掉的组件(非当前显示的组件)是被移除掉了,如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。为此可以添加一个keep-alive指令参数:

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <!----或者<component v-bind:is="which_to_show" keep-alive></component>也行-----> <keep-alive> <component v-bind:is="which_to_show" ></component> </keep-alive> </div> <script> // 创建根实例 new Vue({ el: '#app', data:{ which_to_show:'first' }, methods:{ toShow:function(){ var arr = ["first","second","third"]; var index = arr.indexOf(this.which_to_show); if(index<2){ this.which_to_show = arr[index+1]; }else{ this.which_to_show = arr[0]; } console.log(this.$children); } }, components:{ first:{ template:'<div>这是子组件1<div>' }, second:{ template:'<div>这是子组件2<div>' }, third:{ template:'<div>这是子组件3<div>' }, } }) </script> </body> </html>

说明:

初始情况下,vm.$children属性中只有一个元素(first组件),

点击按钮切换后,vm.$children属性中有两个元素,

再次切换后,则有三个元素(三个子组件都保留在内存中)。

之后无论如何切换,将一直保持有三个元素。

actived钩子

可以延迟执行当前的组件。

具体用法来说,activate是和template、data等属性平级的一个属性,形式是一个函数,函数里默认有一个参数,而这个参数是一个函数,执行这个函数时,才会切换组件。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 动态组件</title> <script src="img.558idc.com/uploadfile/allimg/210405/2021454H6-0.jpg"></script> </head> <body> <div id="app"> <button @click='toShow'>点击显示子组件</button> <!----或者<component v-bind:is="which_to_show" keep-alive></component>也行-----> <keep-alive> <component v-bind:is="which_to_show" ></component> </keep-alive> </div> <script> // 创建根实例 var vm = new Vue({ el: '#app', data: { which_to_show: "first" }, methods: { toShow: function () { //切换组件显示 var arr = ["first", "second", "third", ""]; var index = arr.indexOf(this.which_to_show); if (index < 2) { this.which_to_show = arr[index + 1]; } else { this.which_to_show = arr[0]; } console.log(this.$children); } }, components: { first: { //第一个子组件 template: "<div>这里是子组件1</div>" }, second: { //第二个子组件 template: "<div>这里是子组件2,这里是延迟后的内容:{{hello}}</div>", data: function () { return { hello: "" } }, activated: function (done) { //执行这个参数时,才会切换组件 console.log('hhh') var self = this; var startTime = new Date().getTime(); // get the current time //两秒后执行 while (new Date().getTime() < startTime + 2000){ self.hello='我是延迟后的内容'; } } }, third: { //第三个子组件 template: "<div>这里是子组件3</div>" } } }); </script> </body> </html>

当切换到第二个组件的时候,会先执行activated钩子,会在两秒后显示组件2.起到了延迟加载的作用。

希望本文所述对大家vue.js程序设计有所帮助。