首页 > 其他分享 >vue切换组件的显示以及父页面和组件的通讯

vue切换组件的显示以及父页面和组件的通讯

时间:2024-03-05 22:15:18浏览次数:27  
标签:vue ComponentA ComponentB 切换 组件 import 页面

在Vue.js中,切换组件的显示通常使用v-if、v-else-if、v-else或者v-show指令来实现。v-if 只适合固定值,如果要动态切换就不能做到

 

<template>
  <div>
    <!-- 使用 v-if 和 v-else 来根据条件切换组件 -->
    <ComponentA v-if="condition"></ComponentA>
    <ComponentB v-else></ComponentB>
    
    <!-- 点击按钮切换条件 -->
    <button @click="condition = !condition">切换组件</button>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  components: {
    ComponentA,
    ComponentB
  },
  data() {
    return {
      condition: true // 初始条件,根据这个条件显示不同的组件
    };
  }
};
</script>

需要动态切换这个时候,可以使用动态组件 <component> 和 is 特性来实现组件的动态切换。

<template>
  <div>
    <!-- 使用动态组件来切换组件 -->
    <component :is="currentComponent"></component>
    
    <!-- 点击按钮切换组件 -->
    <button @click="currentComponent = 'ComponentA'">显示A</button>
    <button @click="currentComponent = 'ComponentB'">显示B</button>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  components: {
    ComponentA,
    ComponentB
  },
  data() {
    return {
      currentComponent: 'ComponentA' // 默认显示的组件
    };
  }
};
</script>

注意,动态切换,必须同步引入组件,不能异步引入,异步的话就会找不到组件

import ComponentA from './select-product.vue';

和const selectProduct = defineAsyncComponent(() => import('./select-product.vue'))的区别

 

标签:vue,ComponentA,ComponentB,切换,组件,import,页面
From: https://www.cnblogs.com/zitjubiz/p/18055101

相关文章

  • Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一、Object.defineProperty定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象为什么能实现响应式通过defineProperty 两个属性,get及setget属性......
  • 前端学习-vue视频学习006-watch监视、watchEffect
    尚硅谷视频链接watch监视的5种情况情况1监视【ref】定义的【基本类型】数据<template><divclass="person"><h1>情况1:监视【ref】定义的【基本类型】数据</h1><h2>求和:{{sum}}</h2><button@click="changeSum">sum+1<......
  • Vite 2.0 + Vue3 + Ts + Vant3移动端项目
    highlight:androidstudioVite2.0搭建Vue3移动端项目一.涉及技术点vitevue3tsroutervuexaxiosvant3移动端适配请求代理二.步骤vite+ts+vue3只需要一行命令npminit@vitejs/appmy-vue-app--templatevue-ts初始化项目npminstallnpmrundev**......
  • React 高阶组件、Render props、hooks 有什么区别?
    这三者是目前react解决代码复用的主要方式:高阶组件(hoc)官方解释:高阶组件(HOC)是React中用于复用组件逻辑的一种高级技巧。HOC自身不是ReactAPI的一部分,它是一种基于React的组合特性而形成的设计模式。简言之,HOC是一种组件的设计模式,HOC接受一个组件和额外的......
  • vue中PDF文件转图片方式
    1、在vue中安装依赖 pdfjs-dist  2、在需要引用的文件中添加import*aspdfjsfrom'pdfjs-dist'import*aspdfjsWorkerfrom'pdfjs-dist/build/pdf.worker.entry'pdfjs.GlobalWorkerOptions.workerSrc=pdfjsWorker3、编写需要转换的方法<divv-for="(i......
  • 详细vite创建vue3项目(vue3+vue-router+ts+vite+element-plus+pinia)
    详细vite创建vue3项目(vue3+vue-router+ts+vite+element-plus+pinia):https://blog.csdn.net/qq_44423029/article/details/126378199?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170891147716800185818285%2522%252C%2522scm%2522%253A%252220140713.130102334..%2......
  • Vue学习笔记33-生命周期
    示例一: <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>引入生命周期</title>......
  • 【HarmonyOS】一文带你快速实现页面禁止截屏功能
    ​【关键字】HarmonyOS、禁止页面截屏、窗口、隐私模式、setWindowPrivacyMode 1、写在前面我们在开发HarmonyOS应用的过程中可能会遇到这样的需求:可能某一个页面中的数据对用户而言是非常重要的,因此需要针对该页面做相应的保护操作,常见的就是禁止该页面被截屏,那么在HarmonyO......
  • vue问题
    1.报错errorUnexpectedconsolestatementno-console百度得知是eslint校验问题处理方法:1)在代码中增加eslint忽略文件(貌似不生效)cat.eslintignorebuild/*.jssrc/assetspublicdistsrc/common2)在服务器中安装插件babel-plugin-transform-remove-consolenpmins......
  • Vue学习笔记32--自定义指令--对象式
    Vue学习笔记32--自定义指令--对象式总结:1.autofocus属性,用于input自动获取焦点2.directives指令中this是指window3.vm中使用directives进行自定义指令,为局部指令4.全局指令和全局过滤器类似,应在vm之外使用directive进行声明使用自定义指令总结: 定......