作用:
旧slot的写法:
需求:别人应用你的组件,比如导航栏,想自定义dom结构,因为不同的页面有些dom结构会有细微的差别;
插槽技术就可以满足你的需求:
当你把
- <div>11111div>
- <div>22222div>
- <div>33333div>
- Vue.component("child",{
- template:`
-
- child
-
-
- `
- })
结果:

当你在子组件 child template插入插槽
当你只插了一个插槽slot,子组件
当你插入两个插槽,子组件里的标签也会被插入两次:
- child
-
- <slot>slot>
结果:

那怎么实现标签插入指定位置呢:
插槽分为:单个插槽、具名插槽;
单个插槽:就像上面那样子的;
具名插槽:就是具有名字的插槽, 结果如下图: 所以根据插槽的原理,我们看下面一个小例子: 需求:导航栏,一个调用了我们的子组件child,组件dom结构是这样的,左边显示一个按钮,中间显示文字,右边显示图标。想一想如果我们把dom给规定死的话,别人要小改的话怎么办,这就大大降低了组件的复用性,我们定义组件就是为了提高代码的复用性。 所以我们可以用插槽,把位置空出来让调用组件的人自己定义dom: 新版的插槽只在插入标签的位置上改了新写法; 旧的是直接插入标签,新版的是把slot改成了指令的写法v-slot=“”: v-slot指令名还可以省略: 含义都是在 名为“a”的插槽处插入; 注意: 插槽的意义:扩展组件能力,提高组件的复用性;
新插槽slot的写法: