slot 插槽
slot又名插槽,是Vue的内容分发机制,组件内部的模板引擎使用slot元素作为承载分发内容的出口。插槽slot是子组件的一个模板标签元素,而这一个标签元素是否显示,以及怎么显示是由父组件决定的。slot又分三类,默认插槽,具名插槽和作用域插槽。
- 默认插槽:又名匿名插槽,当slot没有指定name属性值的时候一个默认显示插槽,一个组件内只有一个匿名插槽。
- 具名插槽:带有具体名字的插槽,也就是带有name属性的slot,一个组件可以出现多个具名插槽。
- 作用域插槽:默认插槽、具名插槽的一个变体,可以是匿名插槽,也可以是具名插槽,该插槽的不同点是在子组件渲染作用域插槽时,可以将子组件内部的数据传递给父组件,让父组件根据子组件的传递过来的数据决定如何渲染该插槽。
子父传参的几种类型
子父相互传参
使用场景:子父相互传参时进行使用
父传子
1. 在父组件的子组件标签中,设置自定义属性
2. 在props对象中属性进行接收
子传父
1. $emit('自定义事件名', 需要修改的值)
2. @自定义事件名='对子组件传递过来的数据进行处理'
通过v-model 将数据进行子父组件的传参
使用场景:当子组件中需要修改父组件传递过来的简单数据类型时进行使用
父传子
1. 在父组件的子组件标签中,将参数设置到v-model指令中
2. 在 props 对象中以默认属性 value 来进行接收,写法与正常接收参数一致
子组件修改数据
1. $emit('iuput', 需要修改的值)
通过.sync 修饰符 将数据进行子父组件传参
使用场景: 当子组件中需要修改父组件传递过来的简单数据类型时进行使用,可以传多个参数
父传子:
1. 在父组件的子组件标签中,设置自定义属性.sync
2. 在props对象中对应自定义属性进行正常接收 (基本传参形式一致)
子组件修改数据
1. $emit('update:对应的自定义属性', 需要修改的值)