首页 > 其他分享 >第二十八篇 vue - 深入组件 - 动态组件 - component

第二十八篇 vue - 深入组件 - 动态组件 - component

时间:2023-04-01 11:57:39浏览次数:46  
标签:index vue const component 组件 动态

component

动态组件就是动态变化的组件,和动态样式一样,通过用户的操作来确定是什么类型的组件。动态样式是绑定:style,动态组件则是绑定:is

在 vue 中,实现 Tab 切换主要有三种方式:使用动态组件,使用 vue-router 路由,使用第三方插件。本文将详细介绍Vue动态组件

所谓动态组件就是让多个组件使用同一个挂载点,并动态切换

vue内置component组件, 配合is属性, 设置要显示的组件标签名字

is 用法

通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换

根据 v-bind:is="组件名" 中的组件名去自动匹配组件,如果匹配不到则不显示

改变挂载的组件,只需要修改is指令的值即可

注意

 1、is只能是动态属性 :is="组件注册后的标签名字符串或data变量"
 
 2、不能直接拿注册标签名赋值使用
示例
<!DOCTYPE html>
<html>

<head>
  <title>Dynamic Components Example</title>
  <script src="https://unpkg.com/vue"></script>
</head>

<body>
  <div id="example">
    <button @click="change">切换页面</button>
    <component :is="currentView"></component>
  </div>

  <script>
    const home = {
      template: '<div>我是主页</div>'
    };
    const detail = {
      template: '<div>我是详情页</div>'
    };
    const archive = {
      template: '<div>我是存档页</div>'
    };
    new Vue({
      el: '#example',
      components: {
        home,
        detail,
        archive,
      },
      data: {
        index: 0,
        arr: ['home', 'detail', 'archive'],
      },
      computed: {
        currentView() {
          return this.arr[this.index];
        }
      },
      methods: {
        change() {
          this.index = (++this.index) % 3;
        }
      }
    })
  </script>
</body>

标签:index,vue,const,component,组件,动态
From: https://www.cnblogs.com/caix-1987/p/17278346.html

相关文章

  • [vue3]npm创建环境
    1.npm安装vuecli[root@Python20230401VUE3]#npminstall-g@vue/cli2.查看vue版本[root@Python20230401VUE3]#vue--version@vue/cli5.0.83.创建项目[root@Python20230401VUE3]#vuecreatehello-world4.执行项目$cdhello-world$npmrunserve......
  • 第二十一篇 vue - 深入组件 - 依赖注入 - provide 和 inject
    Prop逐级透传问题provide和inject可以帮助我们解决这一问题。[1]一个父组件相对于其所有的后代组件,会作为依赖提供者任何后代的组件树,无论层级有多深,都可以注入由父组件提供给整条链路的依赖Prop逐级透传问题通常情况下,当我们需要从父组件向子组件传递数据时,会使用pr......
  • vue2 + sass + sass-loader
    本地vue脚手架版本:5.0.8本地node版本:v18.13.0项目创建:vueinitwebpackdemo由于项目本身不支持sass,需要首先安装:npminstallsasssass-loader-D,记住:此处无需安装node-sass,安装后报错。由于sass和sass-loader版本不兼容会出现报错(TypeError:this.getOptionsisnotafunc......
  • vue (一)
     vue是一套构建用户界面的前端框架。 构建用户界面指的是用vue往html中填充数据。 框架指的是一套现成的解决方案,程序员只能遵守框架的规范,去编写自己的业务功能。 vue指令、组件(ui的复用)、路由、vuex、vue组件库 只有把上面罗列的内容掌握之后才有开发vue项目的能力。......
  • VUE分别使用普通方法、计算属性、监听器完成简易计算器
    VUE分别使用普通方法、计算属性、监听器完成简易计算器声明:本方法使用VUE完整框架独立模块组件来实现TOP:实现效果Ⅰ:完整框架Ⅱ:框架实现案例组件功能细分1.APP组件总组件,管理所有组件(每个单独的组件最后都汇总到APP组件里,便于管理)管理汇总:Methodss组件、Watchss......
  • process.env.NODE_ENV 开发环境配置详解(Vue项目)
    开发环境与生产环境下切换baseURL增加.env.development文件NODE_ENV='development'VUE_APP_BASE_URL='/api'增加.env.development文件NODE_ENV='production'VUE_APP_BASE_URL=''使用constaxiosRequest=axios.create({base......
  • 我的第一个项目(七):(解决问题)Vue中canvas无法绘制图片
    好家伙, 现在,我想要把我的飞机大战塞到我的主页里去,想办法把文件导入 然后,直接死在第一步,图片渲染都成问题 先用vue写一个测试文件来测试canvas的绘制<template><div><divref="stage"></div><button@click="drawsth()">添加</button><imgsrc......
  • Vue 2中实现数字滚动效果
     代码:<template><divclass="statistics-num"><!--显示当前数字,不使用逗号分隔符--><spanclass="num">{{currentVal.toString()}}</span><!--显示当前数字,用逗号分隔符--><!--<spanclass="num......
  • Vue引用富文本编辑器
    1.在package.json加上并安装依赖"devDependencies":{"@jsdawn/vue3-tinymce":"^1.1.7",}2.在页面中引入importVue3Tinymcefrom"@jsdawn/vue3-tinymce";3.使用<vue3-tinymcev-model="item.blockDataObj.text":s......
  • vue 使用 导出 Excel
    import*asXLSXfrom"xlsx";exportExcel(){varwb=XLSX.utils.table_to_book(document.querySelector('#data-table2'),{raw:true});varwbout=XLSX.write(wb,{bookType:'xl......