组件化高级
2021/8/11 6:07:24
本文主要是介绍组件化高级,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 插槽slot
- 插槽的基本使用
- 具名插槽的使用
- 编译作用域
- 作用域插槽:准备
插槽slot
-
在原来的功能上具有扩展性
-
组件的插槽:
-
组件的插槽为了让我们封装的组件更加的具有扩展性
-
让使用者可以决定组建内部的一些内容到底展示什么
-
-
如何去封装这些组件?抽取共性,保留不同
-
最好的封装方式就是将共性抽取到组件中,将不同暴露为插槽
-
一旦我们预留了插槽,就可以让使用者根据自己的需求,决定插槽中插入什么内容
-
是搜索框,还是文字,还是菜单,都由调用者自己来决定
-
插槽的基本使用
- 插槽的基本使用:
- 插槽的默认值:
< button>按钮 - 如果有多个值,同时放入到组件进行替换,一起作为替换元素
具名插槽的使用
指定slot的name,并在引用组件的时候给定是哪一个插槽
<div id="app"> <cpn> <button slot="left"><</button> <span slot="center">标题</span> <button slot="right">···</button> </cpn> </div> <template id="cpn"> <div> <slot name="left"><span>左边</span></slot> <slot name="center"><span>中间</span></slot> <slot name="right"><span>右边</span></slot> </div> </template> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { message: '你好啊' }, components: { cpn: { template: `#cpn` } } }) </script>
编译作用域
- 官方给出了一条准则:父组件模板的所有东西都会在父级作用域内编译;子组件模板的所有东西都会在子级作用域内作用域内编译
<div id="app"> <!-- 这里是可以显示的,因为这个cpn属于app在Vue实例中 --> <cpn v-show="isShow"></cpn> </div> <template id="cpn"> <div> <h2>我是子组件</h2> <p>我是内容,哈哈哈</p> <!-- 这里不能显示,因为这个isShow属于组件,在作用域里查找isShow为false --> <button v-show="isShow">按钮</button> </div> </template> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { message: '你好啊', isShow: true }, components: { cpn: { template: `#cpn`, data() { return { isShow: false } } } } }) </script>
作用域插槽:准备
- 用一句话做一个总结,然后在后续的案例中体会:
- 父组件替换插槽的标签,但是内容由子组件来提供
例:想让父组件换一种格式输出,但是拿不到子组件中的值
<div id="app"> <cpn></cpn> <cpn> <!--目的是获取子组件中的pLanguages--> <spn v-for="item in pLanguages"> {{item}} - </spn> </cpn> </div> <template id="cpn"> <div> <slot> <ul> <li v-for="item in pLanguages"> {{item}} </li> </ul> </slot> </div> </template> <script src="../js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { message: '你好啊' }, components: { cpn: { template: `#cpn`, data() { return { pLanguages: ['JavaScript', 'C++', 'Java', 'C#', 'Python', 'Go', 'Swift'] } } } } }) </script>
效果:
正确:
这篇关于组件化高级的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解