**场景1、多次的运用同一个组件,需要在组件的某个固定位置装在不用的样式标签,可以使用匿名插槽,单纯的为了用而用,不需要太多的花里胡哨的操作。
父组件index.vue
这是来自父组件的插槽传输内容
子组件B.vue
**场景2、也是多次使用同一个组件,但是需要在组件的不同位置装载不同的样式标签,这种情况 下可以使用具名插槽
父组件index.vue
我是前往头部的插槽内容
我是前往身体的插槽内容
我是前往尾部的插槽内容
子组件B.vue
***场景3、***你想利用X组件的数据,同时又要展示不同的样式,就比如说用户的个人信息,你想在A组件展示这个样式,想在B组件展示那个样式,可是你你不想写更多的组件,再发送数据,想偷懒,那就要用到作用域
一定要看这段话:使用作用域插槽有两种方法,一种是通过具名插槽的形式去使用,另一种是通过匿名插槽的形式使用,前者更加简单。
~~
~~
父组件index.vue
A组件
A组件内容
中间
重要的话说在前面:你能来找个,说明已经踩了很多坑了,那么恭喜你,我也踩了很多。然后我找到了方法,当然这是使用匿名的。如果你没有碰到这个坑,不要去踩了,我付出了将近三个小时的时间才勉强找到一个稍微合理的方法,还没有完全解决。直接跳下面看具名插槽作用域
问题1:当你满心欢喜的拿到了插槽传过来的数据,你会发现,这玩意是一个proxy对象
问题2:当你想使用两个templat的时候发现只能使用一个,其实这个问题我也没办法,hhh,我解决的是数据的问题。我只能控制展示哪块数据,并不能够两块都展示,都展示还是得具名插槽。有一点可取之处,我拿到了两个插槽得数据,还发现了vue2中的管道符在vue3中的用法。
问题3:不允许写两个相同的匿名的template标签
A组件
ps:其中的data1和data2自己随便定义,引用的时候自己也得记得一样
A组件内容
中间
父组件
{{ filter(slotProps.data1) }}{{ valueData.age }}来自于父组件的插槽1{ data.id }}++{{ data.name }} -->{ data.id }}++{{ data.name }} -->
A组件内容
中间
父组件
***场景4、***如果你想整花活,想随意的变更插槽内容,有A、B、C三个插槽,你想把A、B两插槽的内容进行互换,那么可以使用动态插槽
父组件index.vue
我是前往头部的插槽内容
我是前往身体的插槽内容
我是前往尾部的插槽内容
B组件
我是头部 我是身体