slot是什么?有什么作用?了解子父传参的几种类型?

251 阅读2分钟

slot 插槽

slot又名插槽,是Vue的内容分发机制,组件内部的模板引擎使用slot元素作为承载分发内容的出口。插槽slot是子组件的一个模板标签元素,而这一个标签元素是否显示,以及怎么显示是由父组件决定的。slot又分三类,默认插槽,具名插槽和作用域插槽。

  • 默认插槽:又名匿名插槽,当slot没有指定name属性值的时候一个默认显示插槽,一个组件内只有一个匿名插槽。
  • 具名插槽:带有具体名字的插槽,也就是带有name属性的slot,一个组件可以出现多个具名插槽。
  • 作用域插槽:默认插槽、具名插槽的一个变体,可以是匿名插槽,也可以是具名插槽,该插槽的不同点是在子组件渲染作用域插槽时,可以将子组件内部的数据传递给父组件,让父组件根据子组件的传递过来的数据决定如何渲染该插槽。

子父传参的几种类型

image.png

子父相互传参

  使用场景:子父相互传参时进行使用

  父传子

  1. 在父组件的子组件标签中,设置自定义属性

  2. 在props对象中属性进行接收

  子传父

  1. $emit('自定义事件名', 需要修改的值)  

  2. @自定义事件名='对子组件传递过来的数据进行处理'

通过v-model 将数据进行子父组件的传参

  使用场景:当子组件中需要修改父组件传递过来的简单数据类型时进行使用

  父传子

  1. 在父组件的子组件标签中,将参数设置到v-model指令中

  2. 在 props 对象中以默认属性 value 来进行接收,写法与正常接收参数一致  

  子组件修改数据

  1. $emit('iuput', 需要修改的值)  

image.png

通过.sync 修饰符 将数据进行子父组件传参

 使用场景: 当子组件中需要修改父组件传递过来的简单数据类型时进行使用,可以传多个参数

  父传子:

  1. 在父组件的子组件标签中,设置自定义属性.sync

  2. 在props对象中对应自定义属性进行正常接收 (基本传参形式一致)

  子组件修改数据

  1. $emit('update:对应的自定义属性', 需要修改的值)

image.png