当前位置:   article > 正文

vue3插槽的使用

vue3插槽的使用

1. 默认插槽

默认插槽是最基本的形式,用于插入任何未明确命名的内容。

子组件 (Child.vue) 示例:

  1. <template>
  2. <div class="wrapper">
  3. <header>这是头部</header>
  4. <slot></slot> <!-- 默认插槽位置 -->
  5. <footer>这是尾部</footer>
  6. </div>
  7. </template>

父组件使用示例:

  1. <child>
  2. <p>这里是父组件插入的默认内容</p>
  3. </child>

2. 具名插槽

具名插槽允许你有选择性地插入内容到组件的特定位置。

子组件 (Child.vue) 示例:

  1. <template>
  2. <div class="container">
  3. <slot name="header"></slot>
  4. <slot name="main"></slot>
  5. <slot name="footer"></slot>
  6. </div>
  7. </template>

父组件使用示例

  1. <child>
  2. <template v-slot:header>
  3. <h2>自定义头部</h2>
  4. </template>
  5. <template v-slot:main>
  6. <p>主要内容区域</p>
  7. </template>
  8. <template v-slot:footer>
  9. <p>版权信息</p>
  10. </template>
  11. </child>

3. 作用域插槽

作用域插槽可以接收来自子组件的数据,使插槽内容能基于这些数据动态变化。

子组件 (Child.vue) 示例:

  1. <template>
  2. <div>
  3. <slot v-bind:user="userData"></slot>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. userData: { name: '张三', age: 25 }
  11. };
  12. }
  13. };
  14. </script>

父组件使用示例:

  1. <child>
  2. <template v-slot="{ user }">
  3. <p>姓名:{{ user.name }}</p>
  4. <p>年龄:{{ user.age }}</p>
  5. </template>
  6. </child>

注意事项

  • Vue 2.x 使用 slot 和 slot-scope,而Vue 3.x 及更高版本推荐使用 v-slot 语法糖。
  • 动态插槽可以通过计算属性或其他动态属性值来决定使用哪个插槽,但通常情况下直接使用上述方式已足够满足需求。

通过合理使用插槽,你可以设计出高度可复用和灵活的组件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/770985
推荐阅读
相关标签
  

闽ICP备14008679号