vue3学习(四)

news/2024/9/23 9:24:22/

前言

        接上篇学习笔记,分享3个内置组件:动态组件、缓存组件、分发组件基本用法。大家一起通过code的示例,从现象理解,注意再次理解生命周期。


一、code示例

组件A:CompA

<script setup>
import {onMounted, onUnmounted} from "vue";//再次理解生命周期const compFun = () => {console.log("我是组件A");
}
//vue3,setup相当与created
compFun();onMounted(() => {console.log("组件A挂载");
});onUnmounted(() => {console.log("组件A销毁");
});</script><template><div class="compA"><h1>我是组件A</h1></div></template><style scoped>
.compA{align-content: center;
}</style>

组件B:CompB

<script setup>
import {onMounted, onUnmounted} from "vue";const compFun = () => {console.log("我是组件B");
}
//vue3,setup相当与created
compFun();onMounted(() => {console.log("组件B挂载");
});onUnmounted(() => {console.log("组件B销毁");
});
</script><template><div class="CompB"><h1>我是组件B,我有插槽</h1><slot></slot></div>
</template><style scoped>
.CompB{align-content: center;
}</style>

主页面AppMain.vue

<script setup>
import {ref, defineOptions} from 'vue';
import CompA from './components/CompA.vue';
import CompB from './components/CompB.vue';//vue3不这样定义,会切换无效,但是compName的值却是改变的
defineOptions({components: {CompA,CompB}
})// ref创建响应式数据
const compName = ref('CompA');//
const slotContent = ref("");function changeComp(changeCompName) {console.log("原组件:", compName.value, "新组件:", changeCompName);compName.value = changeCompName;if (changeCompName === 'CompB') {slotContent.value = "<div><hr><h1>我是插槽内容</h1></div>";}
}</script><template><div class="App2"><h1>我是App2父组建</h1><button @click="changeComp('CompA')">组件A</button><button @click="changeComp('CompB')">组件B</button><hr><h1>动态组件切换展示区域,当前组件:{{ compName }}</h1><!-- 缓存组件:缓存非活动组件 --><keep-alive><component v-bind:is="compName"><div v-html="slotContent"></div></component></keep-alive></div>
</template><style scoped>
.App2 {align-content: center;
}
</style>

main.js

import { createApp } from 'vue'
//import App from './App.vue'
import AppMain from './AppMain.vue'createApp(AppMain).mount('#app')

二、现象截图

1.初始化

在这里插入图片描述

2、点击按钮B

在这里插入图片描述

3、点击按钮A

在这里插入图片描述

  • console打印就这些,后面你再怎么点击,组件不会重新销毁、挂载了,这就是缓存组件的妙。
  • 插槽标签呢?slot

总结

  • 基本上动态组件跟子组件上加if、else逻辑一样,可能用的少
  • 缓存组件有编译奇葩问题,大家可以自己试着在“keep-alive”标签体内写注释试试,你会发现编译不通过
            笔记就记到这里,我们一起晚上睡梦中再理解下,uping!

http://www.ppmy.cn/news/1464863.html

相关文章

NXP i.MX8系列平台开发讲解 - 3.12 Linux 之Audio子系统(一)

专栏文章目录传送门&#xff1a;返回专栏目录 目录 1. Audio 基础介绍 1.1 音频信号 1.2 音频的处理过程 1.3 音频硬件接口 1.3 音频专业术语解释 2. Linux Audio子系统介绍 3. Linux Audio子系统框架 Linux嵌入式系统中的音频子系统扮演着至关重要的角色&#xff0c;它涉…

day21二叉树part07|530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

**530.二叉搜索树的最小绝对差 ** 遇到在二叉搜索树上求什么最值&#xff0c;求差值之类的&#xff0c;都要思考一下二叉搜索树可是有序的&#xff0c;要利用好这一特点。 class Solution { public:void trival(TreeNode* node, vector<int>& nums) {if (node nul…

Unity入门理论+实践篇之Luna

创建世界的主角 父子物体 首先创建一个cube物体 可以观察到其在2D视角下的坐标为&#xff08;0&#xff0c;0&#xff09; 此时将cube物体拖拽到ldle_0下&#xff0c;如图所示&#xff0c;并将其坐标值改为&#xff08;2&#xff0c;2&#xff09; 此时再将ldle_0物体的坐标…

U盘无法打开?数据恢复与预防措施全解析

在日常生活和工作中&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;有时我们会遇到U盘无法打开的情况&#xff0c;这无疑给我们带来了诸多不便。本文将深入探讨U盘打不开的现象、原因及解决方案&#xff0c;并分享如何预防此类问题的发生。 一、U盘无法访…

Leetcode刷题笔记2:数组基础2

导语 leetcode刷题笔记记录&#xff0c;本篇博客记录数组基础1部分的题目&#xff0c;主要题目包括&#xff1a; 977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 知识点 滑动窗口 所谓滑动窗口&#xff0c;就是不断的调节子序列的起始位…

Day02:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

详解:Day2:LeedCode977. 有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II-CSDN博客 977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#…

Kubernetes和Docker对不同OS和CPU架构的适配关系

Docker Docker官网对操作系统和CPU架构的适配关系图 对于其他发行版本&#xff0c;Docker官方表示没有测试或验证在相应衍生发行版本上的安装&#xff0c;并建议针对例如Debian、Ubuntu等衍生发行版本上使用官方的对应版本。 Kubernetes X86-64 ARM64 Debian系 √ √ Re…

网页设计步骤总结

第一步&#xff1a;css重置 https://blog.csdn.net/BradenHan/article/details/132122504 第二步&#xff1a;媒体查询不同尺寸加载不同的css文件https://blog.csdn.net/Yi_Lesama/article/details/131184469 <!-- link元素中的CSS媒体查询 --> <link rel"styl…