Vue组件的高级用法

1,递归组件

<!--
递归组件: 组件在它的模板内可以递归的调用自己,只要给组件设置name组件就可以了。
设置那么House在组件模板内就可以递归使用了,不过需要注意的是,
必须给一个条件来限制数量,否则会抛出错误: max stack size exceeded

组件递归用来开发一些具体有未知层级关系的独立组件。比如:
联级选择器和树形控件
-->
父组件

<recursion:count="1"></recursion>

// recursion.vue
< recursion :count=" count+ 1" v-if=" count< 3" ></ recursion >

 

2,内联模板

<!--
组件把它的内容当成模板
父组件作用域下的数据和子组件声明的数组都可以被渲染(如果同名,优先使用子组件数据)
注释: 如果不是特殊场景 不建议使用内联组件
-->
< dynamic inline-template >
< div >
< h3 >在父组件中定义子组件的模板 </ h3 >
< p >{{ msg}} </ p > // 子组件中的数据
< p >{{ message}} </ p >
</ div >
</ dynamic > 

3,动态组件

<!--
组件把它的内容当成模板
父组件作用域下的数据和子组件声明的数组都可以被渲染(如果同名,优先使用子组件数据)
注释: 如果不是特殊场景 不建议使用内联组件
-->
< button @click=" changeComponent( 'A')" >Recursion </ button >
< button @click=" changeComponent( 'B')" >Dynamic </ button >
< button @click=" changeComponent( 'C')" >CurrentComponent </ button >
< component :is=" comp" ></ component >
<!-- 如果切换出去的组件保存在内存中可以使用 <keep-alive> -->

 // .js 

methods: {
changeComponent( val) {
const currentComponentObj = {
A: "Recursion",
B: "Dynamic",
C: "CurrentComponent"
};
this. comp = currentComponentObj[ val];
}
}

4,异步组件

<!--
工程足够大,使用组件足够多的时候,要考虑一下性能的问题了。
没有必要把所有的组件都加载进来
Vue允许将组件定义为一个工厂函数,动态的解析组件的定义
Vue只是在组件需要渲染的时才触发工厂函数并把结果缓存起来
用于再次渲染,推荐配合webpack代码分割功能使用
-->
 

Vue.component("AsyncComponent", (resolve, reject) => {

setTimeout(() => {
require([ "./async-component"], resolve);
}, 1000);
});

 

//高级异步组件
const AsyncComponent = () => ({
component: import( "./async-component"),
loading: Dynamic, // loading时渲染
error: Dynamic, // 出错时渲染
delay: 2000, // 当前组件等待时间
timeout: 3000 // 最长等待时间
});

 


 


1,递归组件

转载于:https://www.cnblogs.com/niusan/p/10390514.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 中的高级组件开发可以通过 mixin、插槽和自定义指令等技术来实现。下面是一些常见的技巧: 1. Mixin:Mixin 是一种重用组件逻辑的方式。通过将常用的选项合并到 mixin 对象中,然后在组件中使用 mixins 选项来引入 mixin。这样可以有效地提高代码的复用性。例如,您可以创建一个 mixin 对象,包含一些常用的方法和生命周期钩子函数,然后在需要的组件中引入。 2. 插槽(Slot):插槽是一种在父组件中向子组件传递内容的方式。通过在父组件中使用<slot>标签,并在子组件中使用<slot>标签的 name 属性来定义插槽。这样可以实现组件的灵活性,使父组件能够根据需要向子组件传递不同的内容。 3. 自定义指令(Custom Directive):自定义指令是一种在 HTML 元素上添加特定行为的方式。通过使用 Vue.directive 函数来定义一个全局的指令,然后在模板中使用 v-directive 指令来调用。自定义指令可以用于处理 DOM 元素的事件、样式、属性等。 4. 动态组件(Dynamic Component):动态组件允许您根据条件渲染不同的组件。通过使用<component>标签并通过 is 属性来指定要渲染的组件,可以根据需要切换不同的组件。 5. 渲染函数(Render Function):Vue 2 中可以使用 render 函数来编写组件的模板。使用 render 函数可以实现更灵活、动态的组件渲染。通过编写 JavaScript 代码来生成组件的虚拟 DOM 树,并将其返回给 Vue 实例进行渲染。 这些是一些基本的高级组件开发技巧,Vue 2 还提供了更多强大的特性和工具,您可以根据具体需求进一步深入学习和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值