zoukankan      html  css  js  c++  java
  • vue slot

    //父组件代码
    <
    template> <div> <p>我是父组件</p> <detail-serod > <div> <p>{{contant}}</p> </div> </detail-serod> </div> </template> <script> import DetailSerod from "./DetailSerod"; export default { name: "Detail", data() { return { contant:'来自父组件的内容', }; }, components: { DetailSerod }, }; </script>

    子组件中的代码:

    <template>
      <div>
        <p>我是子组件</p>
         <slot></slot>
         <p>我是子组件的内容</p>
      </div>
    </template>
    <script>
    export default {
      name: "DetailSerod",
      data() {
        return {
       
        };
      },
      methods: {
    
      }
    };
    </script>

    有时我们需要多个插槽,<slot> 元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽

    在向具名插槽提供内容的时候,我们可以在一个 <template> 元素上使用 v-slot 指令,并以 v-slot 的参数的形式提供其名称:

    <template>
      <div>
        <p>我是父组件</p>
        <detail-serod>
          <template v-slot:cont>
            <div>
              <p>{{contant}}</p>
            </div>
          </template>
          <template v-slot:btn>
            save
          </template>
        </detail-serod>
      </div>
    </template>
    <script>
    import DetailSerod from "./DetailSerod";
    export default {
      name: "Detail",
      data() {
        return {
          contant: "来自父组件的内容"
        };
      },
      components: {
        DetailSerod
      }
    };
    </script>
    <template>
      <div>
        <p>我是子组件</p>
       <slot name="cont"></slot>
        <p>我是子组件的内容</p>
        <button type="submit">
          <slot name="btn">btn</slot>
        </button>
         
      </div>
    </template>
    <script>
    export default {
      name: "DetailSerod",
      data() {
        return {};
      },
      methods: {}
    };
    </script>

    注意 v-slot 只能添加在一个 <template>

    3.。。。有时想让插槽内容能够访问子组件中的数据

    //父组件
    <div> <p>我是父组件</p> <detail-serod> <template v-slot:cont="slotProps">//v-slot:cont=""双引号中的内容随意命名,在下面要用到 <div> <p>{{slotProps.user}}</p> <p></p> </div> </template> <template v-slot:btn> save </template> </detail-serod> </div>
    //子组件
    绑定在 <slot> 元素上的特性被称为插槽 prop。现在在父级作用域中,我们可以给 v-slot 带一个值来定义我们提供的插槽 prop 的名字:
    <
    template> <div> <p>我是子组件</p> <slot name="cont" :user="user"></slot>//将user绑定到slot上在父组件中使用 <p>我是子组件的内容</p> <button type="submit"> <slot name="btn">btn</slot> </button> </div> </template> <script> export default { name: "DetailSerod", data() { return { user:'张三' }; }, methods: {} }; </script>

    在 <template> 上使用特殊的 slot-scope 特性,可以接收传递给插槽的 prop

    slot-scope 声明了被接收的 prop 对象会作为 slotProps 变量存在于 <template> 作用域中。你可以像命名 JavaScript 函数参数一样随意命名 slotProps

    <template>
      <div>
        <p>我是父组件</p>
        <detail-serod>
        
            <div slot="cont" slot-scope="slotProps">   //改变的地方
              <p>{{slotProps.user}}{{contant}}</p>
            </div>
    
          <template v-slot:btn>
            save
          </template>
        </detail-serod>
      </div>
    </template>
    <script>
    import DetailSerod from "./DetailSerod";
    export default {
      name: "Detail",
      data() {
        return {
          contant: "来自父组件的内容"
        };
      },
      components: {
        DetailSerod
      }
    };
    </script>
  • 相关阅读:
    Java并发编程的艺术(二)——volatile、原子性
    Java并发编程的艺术(一)——并发编程的注意问题
    算法——朋友圈(并查集)
    算法——汉诺塔问题
    算法——接雨水
    算法——n皇后问题
    深入理解Java虚拟机(八)——类加载机制
    深入理解Java虚拟机(七)——类文件结构
    转-项目管理5阶段|一位高级项目经理的4年项目经验分享
    什么是信息系统项目管理师(高级项目经理)
  • 原文地址:https://www.cnblogs.com/lvlvlv/p/11649482.html
Copyright © 2011-2022 走看看