zoukankan      html  css  js  c++  java
  • vue插槽与作用域插槽的演示(前端网备份)

    参考https://www.cnblogs.com/ccyinghua/p/7878187.html

    然后近一步解释一下作用域插槽

    父级组件:

    <list2Son :msg="list" @father="change">
          <h1 slot="header">这里可能是一个页面标题</h1>
          <p>22</p>
          <p slot="footer">这里有一些联系信息</p>
          <template slot-scope="props">
            <ul>
              <li v-for="(a,index) in props.text" :key="index">
                <!-- 若不加任何判断,整个template中的标签都会替换为定义时的slot -->
                        <h4>{{a.name}}</h4>
                        <h5>{{a.age}}</h5>
                      <!--  技巧就在于通过a拿到的数据选择性地渲染标签,即修改单个slot对应的作用域范围 -->
                         <span v-if="a.single">我是单身</span>
                        <span v-if="a.stu">我是学生</span>
                        <span v-if="!a.single">我不是单身</span>
                        <span v-if="!a.stu">我不是学生</span>
                </li>
            </ul>
          </template>
        </list2Son>
    
        list: [
            {
              name: "tate",
              age: 26,
              single: true,
              stu: false
            },
            {
              name: "kevin",
              age: 23,
              single: true,
              stu: true
            },
            {
              name: "harden",
              age: 28,
              single: false,
              stu: false
            },
            {
              name: "Jimmy",
              age: 29,
              single: false,
              stu: true
            }
          ]

    子组件:

    <template>
      <div class="wrapper">
          <!-- 我是组件2的儿子 -->
          <!-- <div>{{msg}}</div> -->
    
            <slot :text="msg"></slot>
           <header>
              <slot name="header" say="seeyou">我是插槽头</slot>
            </header>
            <main>
                <slot>我是插槽身</slot>
            </main>
            <footer>
                <slot name="footer">我是插槽脚</slot>
            </footer>
      </div>
    </template>
    
    <script>
    export default {
      components:{},
      props:["msg"],
      data(){
        return {
          father:"我是list2_son子组件返回给list2父组件的值",
           arr:[
                {name:'vue.js'},
                {name:'html权威'},
                {name:'css3'},
            ]
        }
      },
      watch:{},
      computed:{},
      methods:{},
      created(){
        this.$emit("father",this.father)
      },
      mounted(){}
    }
    </script>
    <style  scoped>
    .wrapper{
        color: cadetblue
    }
    </style>
    View Code

    渲染的结果就是

    tate
    26
    我是单身我不是学生
    kevin
    23
    我是单身我是学生
    harden
    28
    我不是单身我不是学生
    Jimmy
    29
    我是学生我不是单身
    这里可能是一个页面标题
    这里有一些联系信息
    
    我是list2_son子组件返回给list2父组件的值

    普通插槽解释:普通插槽在意的是你摆放在子组件的上下文位置

    总结:作用域插槽的实用场景为父组件内调用不同显示形式的模板,就可以通过这种传参给子组件,然后子组件把参数返回给父组件在父组件页面操控子组件显示形式

  • 相关阅读:
    apache http server 和tomcat的区别 以及nginx
    2020-2-12 这样提升自己的口才
    两种常用的队列
    栈的实现与应用
    线性表
    Nginx实现虚拟主机
    将apache添加到服务
    apache安装
    最小生成树
    图的深度优先搜索
  • 原文地址:https://www.cnblogs.com/lsc-boke/p/10997134.html
Copyright © 2011-2022 走看看