您的位置:首页 > 财经 > 产业 > vue3学习(四)

vue3学习(四)

2025/5/22 21:29:26 来源:https://blog.csdn.net/zwrlj527/article/details/139304332  浏览:    关键词:vue3学习(四)

前言

        接上篇学习笔记,分享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!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com