vue.js基础组件4--下

1.动态组件

1.定义动态组件

                    利用动态组件可以动态切换页面中显示的组件。使用<component>标签可以定义动态组件,语法格式如下。

<component is="要渲染的组件"></component>

                上述语法格式中,<component>标签必须配合is属性一起使用,is属性的属性值表示要渲染的组件,当该属性值发生变化时,页面中渲染的组件也会发生变化。

                 is属性属性值可以是字符串组件,当属性值为组件时,如果要实现组件的切换,需要调用shallowRef()函数定义响应式数据,将组件保存为响应式数据。shallowRef()函数只处理对象最外层属性的响应,它比ref()函数更适合于将组件保存为响应式数据。

演示动态组件的使用方法:

              打开命令提示符,切换到D:\vue\chapter04目录,在该目录下执行如下命令,创建项目。

步骤一:

 步骤二:项目创建完成后,执行如下命令进入项目目录,启动项目

步骤三: 

步骤四: 步骤五:

步骤六:

步骤七: 

<template>
  <button @click="showComponent = MyLeft">展示MyLeft组件</button>
  <button @click="showComponent = MyRight">展示MyRight组件</button>
  <div><component :is="showComponent"></component></div>
</template>
<script setup >
import MyLeft from './MyLeft.vue'
import MyRight from './MyRight.vue'
import { shallowRef } from 'vue'
const showComponent  = shallowRef(MyLeft)
</script>

步骤八: 

 

2  .利用KeepAlive组件实现组件缓存

演示KeepAlive组件的使用

步骤一:

<template>
  MyLeft组件
  <div>
    count值为: {{ count }}
    <button @click="count++">+1</button>
  </div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
const count = ref(0)
onMounted(() => {
  console.log('MyLeft组件被挂载了')
})
onUnmounted(() => {
  console.log('MyLeft组件被销毁了')
})
</script>

 

 步骤二:

<div>
  <KeepAlive>
    <component :is="showComponent"></component>
  </KeepAlive>
</div>

 

3 .组件缓存相关的生命周期函数

 演示组件缓存相关的生命周期函数的使用

步骤一:

<script setup>
import { ref, onMounted, onUnmounted, onActivated, onDeactivated } from 'vue'
onActivated(() => {
  console.log('MyLeft组件被激活了')
})
onDeactivated(() => {
  console.log('MyLeft组件被缓存了')
})
</script>

步骤二: 

<script setup>
import { onActivated, onDeactivated } from 'vue'
onActivated(() => {
  console.log('MyRight组件被激活了')
})
onDeactivated(() => {
  console.log('MyRight组件被缓存了')
})
</script>

4 . KeepAlive组件的常用属性

注意:

2.插槽

1 . 什么是插槽

1. 定义插槽

2. 使用插槽

演示插槽的使用方法

步骤一:

步骤二:

<template>
  父组件-----{{ message }}
  <hr>
  <SlotSubComponent>
    <p>{{ message }}</p>
  </SlotSubComponent>
</template>
<script setup>
import SlotSubComponent from './SlotSubComponent.vue'
const message = '这是组件的使用者自定义的内容'
</script>

步骤三:

演示插槽的默认内容:

步骤一:

步骤二:

   

2. 具名插槽

演示具名插槽的使用

步骤一:

<template>
  <div class="article-container">
    <div class="header-box"><slot name="header"></slot></div>
    <div class="content-box"><slot name="content"></slot></div>
    <div class="footer-box"><slot name="footer"></slot></div>
  </div>
</template>
<style>
.article-container > div { border: 1px solid black; }
</style>

步骤二: 

<template>
  <ArticleInfo>
    <template v-slot:header><p>这是文章的头部区域</p></template>
    <template v-slot:content><p>这是文章的内容区域</p></template>
    <template #footer><p>这是文章的尾部区域</p></template>
  </ArticleInfo>
</template>
<script setup>import ArticleInfo from './ArticleInfo.vue' </script>

步骤三:

 3.作用域插槽

1. 定义数据

2. 接收数据

演示作用域插槽的使用

步骤一:

<template>
  <slot message="Hello 默认插槽"></slot>
  <hr>
  <slot message="Hello Vue.js" name="header"></slot>
  <hr>
  <slot :user="user" name="content"></slot>
</template>
<script setup>
import { reactive } from 'vue'
const user = reactive({ name: 'xiaoyuan', age: '15' })	    
</script>

步骤二:

<template>
  <SubScopeSlot>
    <template v-slot:default="scope"><p>{{ scope }}</p></template>
    <template v-slot:header="scope">
      <p>{{ scope }}</p><p>{{ scope.message }}</p>
    </template>
    <template #content="{ user }">
      <p>{{ user.name }}</p><p>{{ user.age }}</p></template>
  </SubScopeSlot>
</template>
<script setup>import SubScopeSlot from './SubScopeSlot.vue'</script>

步骤三:

3.自定义指令

1.什么是自定义指令

2.私有自定义指令的声明与使用

演示私有自定义指令的使用方法

步骤一:

<template>
  <p v-fontSize>DirectiveComponent组件</p>
</template>
<script setup>
const vFontSize = {}
</script>

步骤二:

步骤三:

const vFontSize = {
  mounted: el => {
    el.style.fontSize = '24px'
  }
}

3.全局自定义指令的声明与使用

import { createApp } from 'vue'
import './style.css'
import App from './components/DirectiveComponent.vue'
const app = createApp(App)
app.directive('fontSize', {
  mounted: el => {
    el.style.fontSize = '24px'
  }
})
app.mount('#app')

4.为自定义指令绑定参数

演示自定义指令参数的使用方法

步骤一:

<template>
  <p v-fontSize="fontSize">DirectiveComponent组件</p>
  <button @click=“fontSize = ‘24px’”>更改字号大小</button>
</template>
<script setup>
import { ref } from 'vue'
const fontSize = ref('12px')
const vFontSize = {
  mounted: (el, binding) => { el.style.fontSize = binding.value },
}
</script>

步骤二:

步骤三:

const vFontSize = {
  // 原有代码……
  updated: (el, binding) => {
    el.style.fontSize = binding.value
  }
}

5.自定义指令的函数形式

4.引用静态资源

1. 引用public目录中的静态资源

演示引用public目录中静态资源的方法

步骤一:

步骤二:

2. 引用src\assets目录中的静态资源

演示引用src\assets中静态资源的方法

步骤一:

<template>
  <img :src="icon">
</template>
<script setup>
import icon from '../assets/vue.svg'
</script>

步骤二:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/636329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实战之快速完成 ChatGLM3-6B 在 GPU-8G的 INT4 量化和本地部署

ChatGLM3 (ChatGLM3-6B) 项目地址 https://github.com/THUDM/ChatGLM3大模型是很吃CPU和显卡的&#xff0c;所以&#xff0c;要不有一个好的CPU&#xff0c;要不有一块好的显卡&#xff0c;显卡尽量13G&#xff0c;内存基本要32GB。 清华大模型分为三种(ChatGLM3-6B-Base&…

海山数据库(He3DB)从方法到实践,构建以场景为中心的体验管理体系

编者按&#xff1a;体验优化的过程中设计师经常会遇到几个阶段&#xff0c;发现问题、定义问题、优化问题、查看反馈&#xff0c;但在产品快速迭代的过程中&#xff0c;体验的问题经常被归类到“不紧急”需求中&#xff0c;并逐步转为长尾问题&#xff0c;这些不被重视的问题聚…

区块链钱包如果丢失了私钥或助记词,资产还能恢复吗?

如果你丢失了区块链钱包的私钥或助记词&#xff08;通常是用于恢复钱包的短语或种子&#xff09;&#xff0c;那么你的资产在大多数情况下是无法恢复的。私钥是访问和控制你在区块链上资产的唯一凭证&#xff0c;而助记词&#xff08;如BIP39标准中的12、18、24个单词的短语&am…

​16种常用的数据分析方法-时间序列分析

​时间序列&#xff08;time series&#xff09;是系统中某一变量的观测值按时间顺序&#xff08;时间间隔相同&#xff09;排列成一个数值序列&#xff0c;展示研究对象在一定时期内的变动过程&#xff0c;从中寻找和分析事物的变化特征、发展趋势和规律。它是系统中某一变量受…

ARM|DSP+FPGA+NVIDIA AI摄像头定制

信迈拥有高性能的摄像头全栈能力&#xff1a;掌握车载模组光学设计能力&#xff0c;具有多名经验丰富光学设计专家&#xff1b;具备丰富的车载摄像模组硬件设计经验&#xff1b;掌握目前市面上大部分车载平台的ISP图像画质服务能力&#xff0c;能自主开发图像ISP和增强算法&…

网络流量分析与网络流量采集:深入了解与实用指南

目录 什么是网络流量分析&#xff1f; 网络流量采集的重要性 网络流量分析的常用方法 包捕获和解码 协议分析 流量统计与趋势分析 AnaTraf网络流量分析仪 应用场景与实际案例 企业网络性能监控 数据中心安全防护 了解更多 在当今数字化时代&#xff0c;网络流量分析…

Word怎么画图?这5个方法收藏好!

“我需要在Word文档中画一些图&#xff0c;想问下Word应该怎么画图呢&#xff1f;有没有朋友可以帮我看看怎么操作呢&#xff1f;” 在今天的数字化时代&#xff0c;信息爆炸式增长&#xff0c;人们越来越需要高效、直观地传递和接收信息。而Word画图功能正是这一需求的完美体现…

TSMaster发送CAN报文

打开TSMaster工程 从菜单栏打开CAN报文发送窗口&#xff1a;【分析】->【报文发送】->【添加CAN/CAN FD发送】 可以选择【从CAN数据库添加报文】或者是【添加新的原始报文】 方法一 添加新的原始报文 可以配置报文发送的触发方式&#xff0c;有【手动】和【周期】两种。…

【LeetCode算法】第69题:x的平方根

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;第一次想到的是让i从1开始遍历&#xff0c;看i*ix是否成立&#xff0c;但是这样就会导致i*i超出了int的范围&#xff0c;无法正常求解。第二次&#xff0c;想着比较x/…

【css】引入背景图时候,路径写入@会报错

看报错信息 我的写法 解决办法 在前面加个~

表现层框架设计之表现层设计模式_3.MVVM模式

1.MVVM模式 MVVM模式正是为解决MVP中UI种类变多&#xff0c;接口也会不断增加的问题而提出的。 MVVM模式全称是模型-视图-视图模型&#xff08;Model-View-ViewModel&#xff09;&#xff0c;它和MVC、MVP类似&#xff0c;主要目的都是为了实现视图和模型的分离&#xff0c;不…

无线通信的穿墙能力主要取决于哪些指标

无线通信的穿墙能力是指无线信号在穿越建筑物墙壁时&#xff0c;其信号衰减程度以及能否维持足够强度以进行稳定通信的能力。穿墙能力的好坏直接影响到无线通信在室内环境中的覆盖范围和使用体验。 一、无线信号的频率 无线信号的频率是影响穿墙能力的重要因素之一。一般来说…

mybatisPlus-DB静态工具

方法跟mybatisplus的service接口非常像&#xff0c;静态工具可以避免依赖循环注入。

Github 2024-05-24 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3非开发语言项目2TypeScript项目2JavaScript项目1Kotlin项目1C#项目1C++项目1Shell项目1Microsoft PowerToys: 最大化Windows系统生产…

解密短链接数据分析功能,看这篇就够了!

如今&#xff0c;短链接工具那可是越来越成熟了&#xff0c;生成短链接这事儿基本都深入人心了。不管是企业还是个人&#xff0c;在把长链接转成短链接的这个过程里&#xff0c;都得用到数据统计来进行分析。 先说说对企业的好处&#xff0c;短链接数据统计能助力企业摸透用户…

为什么我们应该放弃定义敏感数据?

个人数据与人以及其他个人数据深深地交织在一起&#xff0c;它就像一幅巨大的挂毯&#xff0c;而这些线是无法轻易拆开的。尝试定义敏感数据就像徒劳地试图从挂毯中找出不同的线头一样&#xff0c;线头与其他线头交织在一起&#xff0c;一旦开始拆线&#xff0c;整个挂毯就会散…

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景Main入口简化写法统一时间格式相关文章 背景 在.NET Core 6.0中&…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

Potree点云手册

兄弟们整理和收集资料不容易&#xff0c;请关注手册&#xff01;&#xff01; Potree 以其高显示速度而脱颖而出&#xff0c;使其成为处理大量点云数据集的绝佳选择。 我们的重点将是 Potree 提供的多样化导航和显示选项。 如果你遇到任何问题&#xff0c;请随时尝试其他浏览器…

25.zabbix升级版本4.0-5.0

zabbix5.0升级要求 环境支持 软件要求&#xff1a; php 要求&#xff1a;版本在 7.2 版本及以上&#xff1b; 数据库要求&#xff1a;mysql&#xff1a;5.5.62 及以上&#xff1b; mariadb&#xff1a;10.0.63 及以上&#xff1b; 不再支持 IBM DB2 数据库&#xff1b; 不再支…