搜索
首页web前端Vue.jsVue.js中使用动态组件的方法
Vue.js中使用动态组件的方法Sep 28, 2020 pm 05:28 PM
vue.js组件

Vue.js中使用动态组件的方法

本文介绍了如何在Vue.js中引用组件中的HTML元素。您可以通过使用Vue路由器或创建动态组件来切换视图或组件模板。

Vue路由器用于在DOM中的视图或组件模板之间导航。要使用Vue路由器,请在route组件中定义路由,并向Vue表明应该在事件(如单击)上挂载新组件。

这是处理用户界面内的边栏和菜单组件中的导航的正确方法。

如果您希望在DOM中挂载的两个任意组件之间进行切换而不需要创建路由,那么您可能需要使用动态组件。

动态组件

Vue动态组件允许用户在两个或多个组件之间进行切换而无需路由,甚至在切换回初始组件时保留数据状态。

其核心思想是让用户在不使用路由器的情况下动态地挂载和卸载用户界面中的组件。

为什么动态组件很重要?

在设计用户界面时,您需要某种形式的灵活性来显示或隐藏基于应用程序状态的嵌套组件。动态组件以高效、简单的方式提供了这个平台。

该特性为您节省了大量代码,因为您可以使用v-ifv-else等Vue条件结构轻松实现动态组件。您可以使用条件结构来实现动态组件,方法是使用占位符来轻松地将逻辑绑定到组件。

这种方法可以确保您的演示始终是干净和明确的。

才能在Vue中创建动态组件。在你的电脑中,你将需要以下资料:

已安装Node.js版本10.x及更高版本。 您可以通过在终端/命令提示符下运行以下命令来验证您是否拥有Node.js 10.x版:

node -v

一个代码编辑器(推荐使用Visual Studio)。

Vue的最新版本,已全局安装在您的计算机上。

您的计算机上已安装Vue CLI 3.0。 为此,请先卸载旧的CLI版本:

npm uninstall -g vue-cli

然后,安装一个新的:

npm install -g @vue/cli

动态组件的语法

Vue为动态组件提供了一个特殊的模板元素,简称为component。语法是这样的:

<component v-bind:is=”currentComponent”></component>

组件元素也可以是一个自关闭标签:

<component v-bind:is=”currentComponent”/>

第一个选项最适合浏览兼容性。

演示

下载starter项目并在VS代码中打开它,以获得一些动态组件的示例。starter项目允许您访问一个现有的测试组件,创建第二个测试组件,并在两者之间进行切换。

导航到components文件夹并创建一个新文件。 将文件命名为Test2.vue并将以下代码块复制到文件中:

<template>
  <div><h1>I am Test 2</h1>
  </div>
</template>
<script>
export default {
  name: &#39;Test2&#39;,
  props: {
    msg: String
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>

现在您有了第二个组件,转到App.vue文件并注册该组件:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <Test />
    <Test2 />
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
import Test2 from &#39;./components/Test2.vue&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test, Test2
  }
}
</script>

两个测试组件现在嵌套在根应用程序组件中。如果只想挂载一个组件,然后动态切换到另一个组件,则必须创建一个动态组件。

将下面的代码块复制到app.vue文件的模板部分:

<template>
   <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <component is="Test" />
   </div>
</template>

接下来,使用以下serve命令运行应用程序:

npm run serve

您将看到只显示Test 1组件。

如果仅在模板中指定了Test 1元素,这正是您将获得的响应。 为了使组件具有动态性,我们可以使用v-bind指令将其绑定到set属性。

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <component v-bind:is="component" />
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
import Test2 from &#39;./components/Test2.vue&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test, Test2
  },
  data (){
    return {
      component:"Test"
    }
  }
}
</script>

您的组件现在与数据中的组件属性绑定。如果您将组件切换到Test2,它将自动挂载Test2组件。

在浏览器上测试一下。

添加方法调用

您可以添加方法调用来控制组件动态显示的逻辑。组件元素允许您访问Vue实例中的每个构造。

下面是一个切换这两个组件的小方法的例子:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <component v-bind:is="component" />
    <button v-on:click="toggle">Toggle</button>
  </div>
</template>
<script>
import Test from &#39;./components/Test.vue&#39;
import Test2 from &#39;./components/Test2.vue&#39;
export default {
  name: &#39;app&#39;,
  components: {
    Test,
     Test2
  },
  data (){
    return {
      component:"Test2"
    }
  },
  methods: {
    toggle(){
      if (this.component === Test) {
        this.component = Test2;
      } else {
        this.component = Test;
      }
    }
  }
}
</script>

切换时保持数据值有效

在Vue团队构建这个特性时,他们选择扩展它的功能,包括存储每个状态的数据值。

为了存储这些数据,Vue提供了一个名为keep-alive的模板元素。使用keep-alive,您可以确保在从一个组件切换回另一个组件后,您的组件状态保持原样。

例如,如果您单击某个链接或在文本框中输入一个值,然后切换组件,那么keep-alive会将您带回到切换回来时使用的相同链接或文本框。

要启用keep-alive,请转到app.vue文件的模板部分,并使用keep-alive元素包装组件元素:

<keep-alive>
  <component v-bind:is="component" />
</keep-alive>

要查看它是否工作,请将表单元素添加到测试中。vue文件,在模板部分添加如下代码块:

<template>
  <div><h1>I am Test 1</h1>
       <form>
         First name:<br>
         <input type="text" name="firstname"><br>
         Last name:<br>
         <input type="text" name="lastname">
       </form>
  </div>
</template>

保存所有项目文件后,再次运行应用程序。在输入框中键入,切换组件,并切换回原始组件。您将注意到在切换组件之前输入的值与之前输入的值完全相同。

1.gif

结论

本文介绍了如何在Vue.js工作流中使用动态组件。您现在还可以通过keep-alive扩展组件元素的能力。

相关推荐:

2020年前端vue面试题大汇总(附答案)

vue教程推荐:2020最新的5个vue.js视频教程精选

更多编程相关知识,请访问:编程入门!!

以上是Vue.js中使用动态组件的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:logrocket。如有侵权,请联系admin@php.cn删除
总结分享几个 VueUse 最佳组合,快来收藏使用吧!总结分享几个 VueUse 最佳组合,快来收藏使用吧!Jul 20, 2022 pm 08:40 PM

VueUse 是 Anthony Fu 的一个开源项目,它为 Vue 开发人员提供了大量适用于 Vue 2 和 Vue 3 的基本 Composition API 实用程序函数。本篇文章就来给大家分享几个我常用的几个 VueUse 最佳组合,希望对大家有所帮助!

5 款适合国内使用的 Vue 移动端 UI 组件库5 款适合国内使用的 Vue 移动端 UI 组件库May 05, 2022 pm 09:11 PM

本篇文章给大家分享5 款适合国内使用的 Vue 移动端 UI 组件库,希望对大家有所帮助!

聊聊Vue3+qrcodejs如何生成二维码并添加文字描述聊聊Vue3+qrcodejs如何生成二维码并添加文字描述Aug 02, 2022 pm 09:19 PM

Vue3如何更好地使用qrcodejs生成二维码并添加文字描述?下面本篇文章给大家介绍一下Vue3+qrcodejs生成二维码并添加文字描述,希望对大家有所帮助。

手把手带你利用vue3.x绘制流程图手把手带你利用vue3.x绘制流程图Jun 08, 2022 am 11:57 AM

利用vue3.x怎么绘制流程图?下面本篇文章给大家分享基于 vue3.x 的流程图绘制方法,希望对大家有所帮助!

Github 上 8 个不可错过的 Vue 项目,快来收藏!!Github 上 8 个不可错过的 Vue 项目,快来收藏!!Jun 17, 2022 am 10:37 AM

本篇文章给大家整理分享8个GitHub上很棒的的 Vue 项目,都是非常棒的项目,希望当中有您想要收藏的那一个。

聊聊vue指令中的修饰符,常用事件修饰符总结聊聊vue指令中的修饰符,常用事件修饰符总结May 09, 2022 am 11:07 AM

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何使用VueRouter4.x?快速上手指南如何使用VueRouter4.x?快速上手指南Jul 13, 2022 pm 08:11 PM

如何使用VueRouter4.x?下面本篇文章就来给大家分享快速上手教程,介绍一下10分钟快速上手VueRouter4.x的方法,希望对大家有所帮助!

如何覆盖组件库样式?React和Vue项目的解决方法浅析如何覆盖组件库样式?React和Vue项目的解决方法浅析May 16, 2022 am 11:15 AM

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境