• 一学就会的Vue slot插槽,真的不看看吗?(使用脚手架)


    目录

    一、前言

    完整内容请关注:

    开始前的准备:

     二、slot插槽的基本使用

    子组件:

    父组件:

    展示效果:

    三、域名插槽的基本使用

    子组件:

    父组件:

    效果展示:

    注意:

    四、如何通过slot从子组件获取内容

    子组件

    父组件

    效果展示:

    五、作用域插槽案例

    子组件

    父组件

    效果展示:


    一、前言

    完整内容请关注:

    https://blog.csdn.net/yzq0820/category_11934130.html?spm=1001.2014.3001.5482https://blog.csdn.net/yzq0820/category_11934130.html?spm=1001.2014.3001.5482

    开始前的准备:

    首先创建两个子组件,soltOne是基础使用,soltTwo是域名插槽使用,soltThree是演示父组件获取子组件内容,图片后的代码一定要注意,容易出现很多细节上的小问题。

    1. import SoltOne from './components/soltOne.vue'
    2. import SoltThree from './components/soltThree.vue'
    3. import SoltTwo from './components/soltTwo.vue'
    4. export default {
    5. name: 'app',
    6. components: {
    7. SoltOne,
    8. SoltTwo,
    9. SoltThree
    10. },

     二、slot插槽的基本使用

    子组件:

    在子组件中使用 给值留下位置,可以得到父组件的值

    1. <script>
    2. export default {
    3. name:'soltOne'
    4. }
    5. script>
    6. <style>
    7. style>

    父组件:

     <solt-one>有Bug发生solt-one>

    展示效果:

     以上就是插槽的最基本的使用

    三、域名插槽的基本使用

    子组件:

    这里,我简单的划分了三个区域,一个头部,内容,尾部

    头部和尾部 都给上了name:‘’让其获得域名

    1. <script>
    2. export default {
    3. name:'soltTwo'
    4. }
    5. script>
    6. <style>
    7. style>

    父组件:

    在此内容下,p标签内只要对应子组件起的name名,就能把值赋值到想要的地方,没有name名的将会赋值到,子组件中没有name名的位置。

    1. <p slot="header">头部信息p>
    2. <p>主要内容1p>
    3. <p>主要内容2p>
    4. <p slot="footer">尾部信息p>

    效果展示:

    父组件还有一种,可以通过域名来实现插槽,使用v-slot:来获取子组件的域名,从而指定赋值,其中也可以添加多条内容,比上一种方法更完善。

    1. <solt-two>
    2. <template v-slot:header>
    3. <p>头部信息1p>
    4. <p>头部信息2p>
    5. template>
    6. <p>主要内容1p>
    7. <p>主要内容2p>
    8. <template v-slot:footer>
    9. <p>尾部信息1p>
    10. <p>尾部信息2p>
    11. template>
    12. solt-two>

    注意:

    这里的顺序是根据子组件的顺序排列,父组件跟换域名位置,还是按照子组件的域名排序出现

    内容会跟着父组件发生改变

    1. <solt-two>
    2. <template v-slot:footer>
    3. <p>头部信息1p>
    4. <p>头部信息2p>
    5. template>
    6. <p>主要内容1p>
    7. <p>主要内容2p>
    8. <template v-slot:header>
    9. <p>尾部信息1p>
    10. <p>尾部信息2p>
    11. template>
    12. solt-two>

    四、如何通过slot从子组件获取内容

    子组件

    这里需要注意的是,要将子组件的值进行v-bind绑定

    1. <script>
    2. export default {
    3. name:'soltThree',
    4. data(){
    5. return{
    6. list:[1,2,3,4,5,6,7,8,9]
    7. }
    8. }
    9. }
    10. script>
    11. <style>
    12. style>

    父组件

    一下提供了四种,子组件的值可以使用v-for遍历,这里的list1是自己新起的名字,son是子组件绑定的,slot-scope这种方法逐步出现了淘汰, #default这种方法比较推荐,看起来就很简单好记

    1. <template v-slot="list1">
    2. <div>{{list1.son}}div>
    3. template>
    4. <solt-three>
    5. <template v-slot:default="list1">
    6. <div>{{list1.son}}div>
    7. template>
    8. solt-three>
    9. <solt-three>
    10. <template #default="list1">
    11. <ul>
    12. <li v-for="(item,index) in list1.son" :key="index">{{item}}li>
    13. ul>
    14. template>
    15. solt-three>
    16. <solt-three>
    17. <template slot-scope="list1">
    18. <div>{{list1.son}}div>
    19. template>
    20. solt-three>

    效果展示:

    五、作用域插槽案例

     父组件替换插槽的标签,但是内容是由子组件来提供。

    ​ 当组件需要在多个父组件多个界面展示的时候,将内容放在子组件插槽中,父组件只需要告诉子组件使用什么方式展示界面。

    子组件

    1. <template >
    2. <div>
    3. <slot :data="pLanguage">
    4. <ul>
    5. <li v-for="(item, index) in pLanguage" :key="index">{{item}}li>
    6. ul>
    7. slot>
    8. div>
    9. template>
    10. <script>
    11. export default {
    12. name:'oneText' ,
    13. data() {
    14. return {
    15. pLanguage:['JavaScript','Java','C++','C']
    16. }
    17. },
    18. }
    19. script>
    20. <style>
    21. style>

    父组件

     

    1. <one-text>
    2. <template #default="slot">
    3. <span>{{slot.data.join(' - ')}}span>
    4. template>
    5. one-text>
    6. <one-text>
    7. <template #default="slot">
    8. <p><span v-for="(item, index) in slot.data" :key="index">{{item}}span>p>
    9. <span>{{slot.data.join(' * ')}}span>
    10. template>
    11. one-text>

    效果展示:

  • 相关阅读:
    数据结构之美:如何优化搜索和排序算法
    吉林大学操作系统真题期末题汇总
    内存空间扩充之进程覆盖技术,交换技术
    Kubernetes Service对象
    MybatisPlus多数据源
    Seata部署TC服务实现高可用和异地容灾
    点击授权将用户信息存储到vuex中
    考研成绩公布后,下一步应该怎么做?
    Flutter快速入门学习(二)
    点击谷歌浏览器安装包没有反应
  • 原文地址:https://blog.csdn.net/yzq0820/article/details/126291140