当前位置: 首页 > news >正文

广州网站建设广州网络推广公司排名现在阳性最新情况

广州网站建设广州网络推广公司排名,现在阳性最新情况,麻涌企业网站建设,长沙部分小区封控文章目录普通插槽Test.vueFancyButton.vue具名插槽Test.vueBaseLayout.vue作用域插槽默认插槽Test.vueBaseLayout.vue具名作用域插槽Test.vueBaseLayout.vue普通插槽 父组件使用子组件时,在子组件闭合标签中提供内容模板,插入到子组件定义的出口的地方 …

文章目录

    • 普通插槽
      • Test.vue
      • FancyButton.vue
    • 具名插槽
      • Test.vue
      • BaseLayout.vue
    • 作用域插槽
      • 默认插槽
        • Test.vue
        • BaseLayout.vue
      • 具名作用域插槽
        • Test.vue
        • BaseLayout.vue

普通插槽

父组件使用子组件时,在子组件闭合标签中提供内容模板,插入到子组件定义的出口的地方

在这里插入图片描述

Test.vue


<template>父组件: start - {{ parentMsg }}<br/><fancy-button><!-- 注意点: 这里是默认插槽内容,如果使用template标签来包裹的话, 就必须加上#default,否则不会渲染出来 -->点我解锁 {{ parentMsg }} <!-- 插槽内容 --><!-- 插槽内容是可以使用父模板中定义的数据 --><!-- 插槽内容无法访问子组件的数据 --><!-- 父组件模板中的表达式只能访问父组件的作用域;子组件模板中的表达式只能访问子组件的作用域。 --></fancy-button><fancy-button><!-- 未提供插槽内容给插槽, 子组件中的插槽将使用插槽中的默认内容 --></fancy-button><br/>父组件: end
</template><script lang="ts" setup>
import FancyButton from './FancyButton.vue';
const parentMsg = 'halo parent'</script>
<style lang="scss"></style>

FancyButton.vue

<template>子组件: start - {{ sonMsg }}<br/><button><slot>默认内容: {{ sonMsg }}</slot> <!-- 插槽出口 --><!-- 当没有提供插槽内容的情况下, 就展示“默认内容” --></button><br/>子组件: end
</template><script lang="ts" setup>const sonMsg = 'halo son'</script><style lang="scss"></style>

具名插槽

在一个组件中可以定义多个插槽出口slot,每个插槽出口slot可以使用name属性标识插槽名,称为具名插槽(没有提供 name 的 <slot> 出口会隐式地命名为“default”
在这里插入图片描述

Test.vue

<template><BaseLayout><template v-slot:header>    <!-- 将会把这块插入到BaseLayout组件中定义的名为header的插槽中 --><p>-{{ parentMsg }}-</p><!-- 如果BaseLayout组件中定义了多个名为header的插槽, 则每个都会插入 --></template>                 <!-- 可以将v-slot:header简写为 #header --><template #default>          <!-- 将 v-slot:default 简写为 #default --><p>+默认内容+</p>         <!-- 默认插槽可以不使用template包裹, 直接写即可,这是因为当一个组件同时接收默认插槽和具名插槽时,所有位于顶级的非 <template> 节点都被隐式地视为默认插槽的内容--></template><template v-slot:[pos]>       <!-- 动态插槽名, 当通过下面changePos修改pos值时, 插槽内容会切换到不同地方 --><span>*{{ parentMsg }}*</span></template></BaseLayout><hr/><button @click="changePos">切换动态插槽名{{pos}}</button></template><script lang="ts" setup>import { ref, reactive } from 'vue'import BaseLayout from '@/views/test/BaseLayout.vue'const parentMsg = ref('parentMsg')const pos = ref('footer')const changePos = ()=>{if(pos.value === 'footer'){pos.value = 'outer'} else {pos.value = 'footer'}}
</script>
<style lang="scss"></style>

BaseLayout.vue

<template><div class="container"><header><slot name="header"></slot> <!-- 这里会插入 --><slot name="header"></slot> <!-- 这里同样会插入 --></header><main><slot></slot></main><footer><slot name="footer">{{ '父组件不提供的话,就展示: ' + footerContent }}</slot></footer></div>outer----<slot name="outer">{{ '父组件不提供的话,就展示: ' + outerContent }}</slot>
</template><script lang="ts" setup>import { ref,reactive } from 'vue'const footerContent = ref('footerContent')const outerContent = ref('outerContent')
</script><style lang="scss"></style>

作用域插槽

父组件中定义的插槽的内容无法访问到子组件的数据,但是我们需要一种方法来让子组件在渲染时将一部分数据提供给插槽。

默认插槽

在这里插入图片描述

Test.vue

<template><!-- 因为这里只使用了一个默认插槽,所以可以把v-slot=slotProps写在组件的位置 --><BaseLayout v-slot="slotProps"> <!-- 拿到子组件提供给插槽的数据, ,默认省略了default, 即:本来是v-slot:default="slotProps",可以直接在这里解构 --><!-- 注意: 这里使用默认插槽的情况下,不能使用template标签将下面内容包裹 -->{{ parentMsg }}  <!-- 本身就可以访问到父组件自身的数据 -->{{ slotProps }}  {{ slotProps.count }}</BaseLayout>
</template><script lang="ts" setup>
import { ref, reactive } from 'vue'
import BaseLayout from './BaseLayout.vue';
const parentMsg = ref('parentMsg')</script>
<style lang="scss"></style>

或如下

<template><BaseLayout><template v-slot:default="slotProps"> <!-- 这里可省略为#default="slotProps" -->{{ parentMsg }}  <!-- 本身就可以访问到父组件自身的数据 -->{{ slotProps }}  {{ slotProps.count }}</template></BaseLayout>
</template><script lang="ts" setup>
import { ref, reactive } from 'vue'
import BaseLayout from './BaseLayout.vue';
const parentMsg = ref('parentMsg')</script>
<style lang="scss"></style>

BaseLayout.vue

<template><div><!-- 向插槽的出口上传递 属性及值--><slot :text="greetMsg" :count="1"></slot></div>
</template><script lang="ts" setup>import { ref,reactive } from 'vue'const greetMsg = ref('打招呼')
</script><style lang="scss"></style>

具名作用域插槽

在这里插入图片描述

Test.vue

<template><BaseLayout><template #default="defaultProps">{{ parentMsg }}  <!-- 本身就可以访问到父组件自身的数据 -->{{ defaultProps }}  {{ defaultProps.count }}</template><template #title="{name,age}">title - {{ parentMsg }}title - {{ name }} - {{ age }}</template></BaseLayout>
</template><script lang="ts" setup>import { ref, reactive } from 'vue'import BaseLayout from './BaseLayout.vue';const parentMsg = ref('parentMsg')</script>
<style lang="scss"></style>

BaseLayout.vue

<template><div><slot :text="greetMsg" :count="1"></slot><br/><slot name="title" v-bind="person" v-for="person in persons"></slot></div>
</template><script lang="ts" setup>import { ref,reactive } from 'vue'const greetMsg = ref('打招呼')const persons = [{name:'zzhua',age:18},{name:'zj',age:22}]
</script><style lang="scss"></style>
http://www.rdtb.cn/news/13854.html

相关文章:

  • 网站开发招标前提dz论坛如何seo
  • 铁岭新区旅行社电话网站优化及推广
  • 奥德贵阳网络推广公司seo精准培训课程
  • 惠州百度推广排名电商seo优化是什么
  • 深圳网站建设与网站制作如何找客户资源
  • 专业做网站优化搜索引擎优化的简称
  • 护士做兼职的网站推广软文范文
  • 系统开发过程中的第一个文档什么叫做seo
  • 珠海企业集团网站建设wordpress官网入口
  • 网站浏览器测试引擎网站
  • 泰安营销型手机网站建设网络营销具有哪些特点
  • 成都酒店设计公司淘宝seo什么意思
  • pc端和移动端的网站区别是什么意思企业管理培训课程费用
  • 冬季什么行业做网站比较多小程序设计
  • 拼客多网站多少钱可以做上海全网推广
  • 建一个网站首先要怎么做网络营销环境的分析主要是
  • soho没有注册公司 能建一个外贸网站吗推广平台排名前十名
  • wordpress 广告管理重庆seo网站系统
  • 手机网站的文本排版是怎么做的seo推广如何做
  • 腾讯做的购物网站优惠活动推广文案
  • 福州移动网站建设b2b电子商务网站
  • 网上青年团智慧团建登录虞城seo代理地址
  • 深圳专业建站平台上海企业网站推广
  • 广东企业网站建设长沙百度快速排名
  • 医院网站建设的目的西安seo报价
  • 怎么样网站速度快产品营销
  • 网站建设书外贸平台有哪些比较好
  • 南宁美丽南方官方网站建设意见新网站推广最直接的方法
  • 佛山新网站建设如何恶意点击软件有哪些
  • 广州市天河区网站设计公司上海服务政策调整