返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中怎么动态创建注册component
  • 564
分享到

Vue中怎么动态创建注册component

2024-04-02 19:04:59 564人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关Vue中怎么动态创建注册component,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常规组件声明与注册// 定义一个名为&

这期内容当中小编将会给大家带来有关Vue中怎么动态创建注册component,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

常规组件声明与注册

// 定义一个名为 button-counter 全局注册的组件
Vue.component("button-counter", {
 template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>',
 data() {
  return {
   count: 0
  }
 }
});

new Vue({
 template: `
  <div id="app">
   <h2>App Component</h2>
   <button-counter></button-counter>
  </div>
 `
}).$mount("#app");

在上面的代码中我们声明了一个叫做 button-counter 的组件。如果在常规情况下使用的话,只需要在页面上写对应的 <button-counter></button-counter> 标签就够了。

全局创建注册组件可以实现动态创建,但是我们必须在 template 声明使用该组件,而且如果把所有组件都全局注册这并不是一个好办法。

在官方文档中我们可以看到,我们可以通过 Vue.component('component-name') 的方式来注册一个组件。

而组件实例又有 $mount 这样一个方法,官方对于 $mount 的解释如下:

vm.$mount( [elementOrSelector] )
Arguments:
{Element | string} [elementOrSelector]
{boolean} [hydrating]
Returns: vm - the instance itself
Usage:
If a Vue instance didn't receive the el option at instantiation, it will be in “unmounted” state, without an associated DOM element. vm.$mount() can be used to manually start the mounting of an unmounted Vue instance.
If elementOrSelector argument is not provided, the template will be rendered as an off-document element, and you will have to use native DOM api to insert it into the document yourself.
The method returns the instance itself so you can chain other instance methods after it.

那我们是否可以通过这种方式来达到我们的需求呢?

还不够!

为什么???

因为 Vue.component 返回的结果是一个 function!它返回的并不是 组件实例,而是一个构造函数。

那到这里其实我们就清楚了。 对于 Vue.component 声明的组件,我们先通过 Vue.component 获取它的构造函数,再 new 出一个组件实例,最后 通过 $mount 挂载到 html 上。

// 定义一个名为 button-counter 全局注册的组件
Vue.component("button-counter", {
 template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>',
 data() {
  return {
   count: 0
  }
 }
});

new Vue({
 template: `
  <div id="app">
   <h2>App Component</h2>
   <button @click="insert">click to insert button-counter comonent</button>
   <div id="insert-container"></div>
  </div>
 `,
 methods: {
  insert() {
   const ButtonCounter = Vue.component("button-counter"); // 只能查找到全局注册到组件
   const instance = new ButtonCounter();
   instance.$mount("#insert-container");
  }
 }
}).$mount("#app");

上述代码中,Vue.component 先获取到组件的构造函数,然后构造实例,通过实例的一些方法来处理数据和挂载节点。

但是我们发现 Vue.component 只负责全局注册或查找。

如果想要针对局部注册的组件使用动态创建并添加我们需要使用 Vue.extend 基础Vue构造器创建"子类"达到目的。

其实 Vue.component 方法传入的选项是一个对象时,Vue自动调用 Vue.extend。

完整代码示例:

const ButtonCounterComponent = {
 template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>',
 data() {
  return {
   count: 0
  }
 }
};

new Vue({
 template: `
  <div id="app">
   <h2>App Component</h2>
   <button @click="insert">click to insert button-counter comonent</button>
   <div id="insert-container"></div>
  </div>
 `,
 methods: {
  insert() {
   const ButtonCounter = Vue.extend(ButtonCounterComponent);
   const instance = new ButtonCounter();
   instance.$mount("#insert-container");
  }
 }
}).$mount("#app");

单文件应用

在实际使用场景里,大部分都是用脚手架构建到项目,使用 *.vue 这种单文件方式注册组件。

<template></template>
<script>
export default {
 data() {
  return {
   msg: "hello"
  }
 },
 created() {},
 mounted() {},
 destroy() {}
};
</script>
<style scoped></style>

import *.vue 返回的就是模版中 script 中 export 部分。

上述就是小编为大家分享的Vue中怎么动态创建注册component了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: Vue中怎么动态创建注册component

本文链接: https://lsjlt.com/news/65621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue中怎么动态创建注册component
    这期内容当中小编将会给大家带来有关Vue中怎么动态创建注册component,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常规组件声明与注册// 定义一个名为&...
    99+
    2024-04-02
  • vue动态组件component怎么使用
    本篇内容介绍了“vue动态组件component怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、component如何实现动态组件...
    99+
    2023-06-21
  • vue怎么创建动态form表单
    这篇文章主要讲解了“vue怎么创建动态form表单”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么创建动态form表单”吧!针对各个表单写好通用的组件,然后根据type用v-if来渲...
    99+
    2023-07-04
  • Android中使用Receiver怎么实现动态注册与静态注册
    Android中使用Receiver怎么实现动态注册与静态注册?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。广播接收器注册一共有两种形式 : 静态注册和动态注册.两者及其接...
    99+
    2023-05-31
    android receiver roi
  • Android中怎么实现动态注册
    这期内容当中小编将会给大家带来有关Android中怎么实现动态注册,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一种写法:首先新建一个Java类,通过"New/Other/Broadcast ...
    99+
    2023-06-04
  • SpringCloud注册中心集群怎么创建
    本篇内容介绍了“SpringCloud注册中心集群怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!集群环境搭建我们新建两个注册中心工程...
    99+
    2023-06-05
  • Javascript中怎么动态创建DIV
    Javascript中怎么动态创建DIV,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Javascript动态创建DIV这是原来的CSS样式....
    99+
    2024-04-02
  • 怎么动态注册Bean到Spring
    这篇文章主要介绍了怎么动态注册Bean到Spring的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么动态注册Bean到Spring文章都会有所收获,下面我们一起来看看吧。1、理论一般如果想将类注册到sprin...
    99+
    2023-06-29
  • 聊聊Vue怎么用extend动态创建组件
    Vue.js是一个流行的JavaScript框架,它提供了许多功能来帮助我们构建交互式Web应用程序。其中之一是使用extend方法动态创建组件。什么是extend方法?extend方法是Vue.js提供的一个方法,它允许我们创建一个新的V...
    99+
    2023-05-14
    前端 Vue.js
  • 怎么在python中动态创建类
    这篇文章将为大家详细讲解有关怎么在python中动态创建类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-14
  • Java Spring Cloud怎么创建服务注册中心
    本篇内容介绍了“Java Spring Cloud怎么创建服务注册中心”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!服务注册中心:我们要用到...
    99+
    2023-06-05
  • vue3中怎么通过遍历传入组件名称动态创建多个component组件
    这篇文章主要介绍“vue3中怎么通过遍历传入组件名称动态创建多个component组件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3中怎么通过遍历传入组件名称动态创建多个component组...
    99+
    2023-07-05
  • vue中怎么注册组件
    vue中怎么注册组件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、全局注册(这种方式注册组件必须在vue实例化之前声明)Vue.compo...
    99+
    2024-04-02
  • c#中怎么用Emit动态创建类
    在C#中使用Emit动态创建类,需要使用System.Reflection.Emit命名空间中的类和方法。以下是一个简单的示例,演示...
    99+
    2024-04-02
  • Spring容器的创建过程中怎么注册BeanPostProcessor
    这篇文章主要介绍了Spring容器的创建过程中怎么注册BeanPostProcessor,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。注册BeanPostProcessorr...
    99+
    2023-06-15
  • ImportBeanDefinitionRegistrar手动控制BeanDefinition创建注册详解
    目录一、什么是ImportBeanDefinitionRegistrar二、ImportBeanDefinitionRegistrar使用很简单registerFilters()方法...
    99+
    2022-12-26
    BeanDefinition创建注册 ImportBeanDefinitionRegistrar BeanDefinition
  • 企业怎么注册Gitlab并创建项目
    这篇文章主要介绍“企业怎么注册Gitlab并创建项目”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“企业怎么注册Gitlab并创建项目”文章能帮助大家解决问题。登陆一般企业的gitlab都是私有的,也...
    99+
    2023-07-05
  • C#中怎么动态创建一个数组
    这期内容当中小编将会给大家带来有关C#中怎么动态创建一个数组,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#动态创建数组实例:ArrayList al = new ...
    99+
    2023-06-17
  • vue+element如何创建动态form表单
    这篇文章主要为大家展示了“vue+element如何创建动态form表单”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue+element如何创建动态form...
    99+
    2024-04-02
  • vue3中通过遍历传入组件名称动态创建多个component组件
    目录背景解决问题原因:背景 在 vue3 中,如果使用 component,可以动态加载一个组件,例如 <!-- 直接创建 --> <component :i...
    99+
    2023-03-23
    vue3动态创建多个component 组件 vue3 component 组件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作