如何使用Vue中的slot
2017-06-06 19:08
316 查看
之前看官方文档,由于自己理解的偏差,不知道slot是干嘛的,看到小标题,使用Slot分发内容,就以为 是要往下派发内容。然后就没有理解插槽的概念。其实说白了,使用slot就是先圈一块地,将来可能种花种菜,也有可能在这块地上建房子。然而slot可以以一当十,可以插入很多东西。不知明白否?
由于项目经验有限,这篇我就先跟着官网的知识点走,当然会加入自己的部分项目代码。
关于slot是这样说的,
除非子组件模板包含至少一个
最初在
假定
父组件模版:
渲染结果:
除了上述问题,还可以,给出名称,具名slot。
难点在于作用域插槽的理解:
上面这样讲到,
作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)可重用模板替换已渲染元素。
在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样
<div class="child"> <slot text="hello from child"></slot></div>
<div class="parent"> <child> <template scope="props"> <span>hello from parent</span> <span>{{ props.text }}</span> </template> </child></div>
<div class="parent"> <div class="child"> <span>hello from parent</span> <span>hello from child</span> </div></div>
还有一个就是用于列表组件,允许组件自定义应该如何渲染列表每一项。
由于项目经验有限,这篇我就先跟着官网的知识点走,当然会加入自己的部分项目代码。
关于slot是这样说的,
除非子组件模板包含至少一个
<slot>插口,否则父组件的内容将会被丢弃。当子组件模板只有一个没有属性的 slot 时,父组件整个内容片段将插入到 slot 所在的 DOM 位置,并替换掉 slot 标签本身。
最初在
<slot>标签中的任何内容都被视为备用内容。备用内容在子组件的作用域内编译,并且只有在宿主元素为空,且没有要插入的内容时才显示备用内容。
假定
my-component组件有下面模板:
<div> <h2>我是子组件的标题</h2> <slot> 只有在没有要分发的内容时才会显示。 </slot></div> |
<div> <h1>我是父组件的标题</h1> <my-component> <p>这是一些初始内容</p> <p>这是更多的初始内容</p> </my-component></div> |
<div> <h1>我是父组件的标题</h1> <div> <h2>我是子组件的标题</h2> <p>这是一些初始内容</p> <p>这是更多的初始内容</p> </div></div> |
难点在于作用域插槽的理解:
上面这样讲到,
作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)可重用模板替换已渲染元素。
在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样
<div class="child"> <slot text="hello from child"></slot></div>
<div class="parent"> <child> <template scope="props"> <span>hello from parent</span> <span>{{ props.text }}</span> </template> </child></div>
<div class="parent"> <div class="child"> <span>hello from parent</span> <span>hello from child</span> </div></div>
还有一个就是用于列表组件,允许组件自定义应该如何渲染列表每一项。
相关文章推荐
- vue如何使用 Slot 分发内容实例详解
- 如何使用Vue中的slot
- Vue.js-----轻量高效的MVVM框架(十一、使用slot分发内容)
- 如何优雅的使用vue+vux开发app -02
- Vue.js 2使用中的难点举例--子组件,slot, 动态组件,事件监听
- vue 使用Slot 分发内容 学习总结。
- 使用Vue开发网站之路3-slot内容分发实现基础表单,衍生表单
- 如何使用好pyqt的signal和slot
- 如何在vue.js中使用jQuery 插件
- 如何优雅地使用 VSCode 来编辑 vue 文件?
- vue2.0 使用vue-cli搭建的项目如何在index.html里引入静态css和js
- 如何在 Vue.js 中使用第三方库
- webpack vuejs 和 vue-router 如何使用?
- Flask MVVM 开发(vue.js) - ajax如何同步更新地址栏history 以及使用浏览器返回按钮
- 如何使用Vuex+Vue.js构建单页应用
- Vue中如何使用less
- Vue.js-----轻量高效的MVVM框架(使用slot分发内容)
- Vue - 如何使用vue监听一个不存在的变量
- 如何使用vue-cli生成项目
- 如何在vue项目中使用md5.js及base64.js