vue - 插槽slot

默认插槽:

会把父组件human中的内容全部解析到子组件中的slot中

父组件

<template>
  <div id="App">
    <human>
      <h2>USER</h2>
      <h2>NAME</h2>
    </human>
  </div>
</template>

<script>
import human from "./components/human"

export default {
  name: 'App',
  components: {
    human,
  }
}
</script>

<style></style>

子组件

<template>
  <div>
    <h4>HUMAN</h4>
    <!--这是一个插槽-->
    <slot></slot>
  </div>
</template>

<script>
  export default {
    name: 'Human',
  }
</script>

<style></style>

 

具名插槽:

父组件

<template>
  <div id="App">
    <human>
      <!--根据插槽的名称放入指定的插槽内-->
      <h2 slot="bottom">USER</h2>
      <h2 slot="top">NAME</h2>
    </human>
  </div>
</template>

子组件

<template>
  <div>
    <h4>HUMAN</h4>
    <!--这是一个插槽并且给插槽设置名称-->
    <slot name="top"></slot>
    <slot name="bottom"></slot>
  </div>
</template>

 

作用域插槽:

子组件给父组件分享数据

父组件

<template>
  <div id="App">
    <human>
      <template scope="value">
        <h1>{{value.username}}</h1>
      </template>
    </human>
  </div>
</template>

<script>
import human from "./components/human"

export default {
  name: 'App',
  components: {
    human,
  }
}
</script>

<style></style>

子组件

<template>
  <div>
    <h4>HUMAN</h4>
    <!--插槽给父组件分享数据-->
    <slot :username="username"></slot>
  </div>
</template>

<script>
  export default {
    name: 'Human',
    data(){
      return {
        username: 'levi',
        password: 123
      }
    }
  }
</script>

<style></style>

 

posted on 2022-05-22 00:15  每天积极向上  阅读(19)  评论(0编辑  收藏  举报

导航