zoukankan      html  css  js  c++  java
  • vue 插槽

    默认插槽(匿名插槽)

    father.vue

    <template>
      <div class="father">
        <h3>这里是父组件</h3>
        <child>
          <div class="tmpl">
            <span>菜单1</span>
            <span>菜单2</span>
          </div>
        </child>
      </div>
    </template>
    
    <script>
      import child from "./child";
    
      export default {
        name: "father",
        components: {
          child
        }
      }
    </script>

     因为父组件在里面写了html模板,那么子组件的匿名插槽这块模板就是下面这样。也就是说,子组件的匿名插槽被使用了,是被下面这块模板使用了。

    child.vue

    <template>
      <div class="child">
        <h3>这里是子组件</h3>
        <slot></slot>
      </div>
    </template>
    
    <script>
      export default {
        name: "slot"
      }
    </script>

    具名插槽

    father.vue

    <template>
      <div class="father">
        <h3>这里是父组件</h3>
        <child>
          <div class="tmpl" slot="up">
            <span>菜单1</span>
            <span>菜单2</span>
          </div>
          <div class="tmpl" slot="down">
            <span>菜单-1</span>
            <span>菜单-2</span>
          </div>
          <div class="tmpl">
            <span>菜单->1</span>
            <span>菜单->2</span>
          </div>
        </child>
      </div>
    </template>
    
    <script>
      import child from "./child";
    
      export default {
        name: "father",
        components: {
          child
        }
      }
    </script>

    child.vue

    <template>
      <div class="child">
        <h3>这里是子组件</h3>
        <!--    具名插槽-->
        <slot name="up"></slot>
        <!--    具名插槽-->
        <slot name="down"></slot>
        <!--    匿名插槽-->
        <slot></slot>
      </div>
    </template>
    
    <script>
      export default {
        name: "slots"
      }
    </script>

    作用域插槽(带数据的插槽)

    father.vue

    <template>
      <div class="father">
        <h3>这里是父组件</h3>
        <child>
          <div class="tmpl" slot="up">
            <span>具名插槽-up-1</span>
            <span>具名插槽-up-2</span>
          </div>
        </child>
        <child>
          <div class="tmpl" slot="down">
            <span>具名插槽-down-1</span>
            <span>具名插槽-down-2</span>
          </div>
        </child>
        <child>
          <div class="tmpl">
            <span>匿名插槽-1</span>
            <span>匿名插槽-2</span>
          </div>
        </child>
        <child-data>
          <template slot-scope="props">
            <span>作用域插槽</span>
            {{props.data.name}}
          </template>
        </child-data>
      </div>
    </template>
    
    <script>
      import child from "./child";
      import childData from "./childData";
    
      export default {
        name: "father",
        components: {
          child,
          childData
        }
      }
    </script>

    child.vue 同上

    childData.vue

    <template>
      <div class="child">
        <!--    作用域插槽-->
        <slot :data="data"></slot>
      </div>
    </template>
    
    <script>
      export default {
        name: "childData",
        data: function () {
          return {
            data: {
              name: 'vue',
              isUse: true
            }
          }
        },
      }
    </script>
  • 相关阅读:
    sqlserver 智能提示插件
    支付相关-算法知识2
    支付相关-算法知识1
    支付相关-证书知识学习4
    支付相关-证书知识学习3
    支付相关-证书知识学习2
    getID3类的学习使用
    ThinkPHP 的 Vender的简单实用
    postman的简单使用
    js 实现点击复制文本内容
  • 原文地址:https://www.cnblogs.com/ronle/p/12179743.html
Copyright © 2011-2022 走看看