vue3.0中全局注册组件版本1-官方

2023-10-30

前言:

      在对vue3.0的使用和学习中,发现了很多和以前不一样的方法,这里聊一聊vue3.0中给我们提供的全局的注册组件方法

官方文档:入口

目录:

具体方法介绍:

1、前提:返回一个提供应用上下文的应用实例。应用实例挂载的整个组件树共享同一个上下文。

2、defineComponent  全局注册异步组件

3、defineAsyncComponent  创建一个只有在需要时才会加载的异步组件。

4、resolveComponent

5、resolveDynamicComponent

6、resolveDirective

7、withDirectives


具体方法介绍:

1、前提:返回一个提供应用上下文的应用实例。应用实例挂载的整个组件树共享同一个上下文。

const app = Vue.createApp({})

2、defineComponent  全局注册异步组件

从实现上看,defineComponent 只返回传递给它的对象。但是,就类型而言,返回的值有一个合成类型的构造函数,用于手动渲染函数、TSX 和 IDE 工具支持。

具有组件选项的对象

import { defineComponent } from 'vue'

const MyComponent = defineComponent({
  data() {
    return { count: 1 }
  },
  methods: {
    increment() {
      this.count++
    }
  }
})

或者是一个 setup 函数,函数名称将作为组件名称来使用

import { defineComponent, ref } from 'vue'

const HelloWorld = defineComponent(function HelloWorld() {
  const count = ref(0)
  return { count }
})

3、defineAsyncComponent  创建一个只有在需要时才会加载的异步组件。

对于基本用法,defineAsyncComponent 可以接受一个返回 Promise 的工厂函数。Promise 的 resolve 回调应该在服务端返回组件定义后被调用。你也可以调用 reject(reason) 来表示加载失败。

import { defineAsyncComponent } from 'vue'

const AsyncComp = defineAsyncComponent(() =>
  import('./components/AsyncComponent.vue')
)

app.component('async-component', AsyncComp)

当使用局部注册时,你也可以直接提供一个返回 Promise 的函数:

import { createApp, defineAsyncComponent } from 'vue'

createApp({
  // ...
  components: {
    AsyncComponent: defineAsyncComponent(() =>
      import('./components/AsyncComponent.vue')
    )
  }
})

对于高阶用法,defineAsyncComponent 可以接受一个对象:

defineAsyncComponent 方法还可以返回以下格式的对象:

import { defineAsyncComponent } from 'vue'

const AsyncComp = defineAsyncComponent({
  // 工厂函数
  loader: () => import('./Foo.vue')
  // 加载异步组件时要使用的组件
  loadingComponent: LoadingComponent,
  // 加载失败时要使用的组件
  errorComponent: ErrorComponent,
  // 在显示 loadingComponent 之前的延迟 | 默认值:200(单位 ms)
  delay: 200,
  // 如果提供了 timeout ,并且加载组件的时间超过了设定值,将显示错误组件
  // 默认值:Infinity(即永不超时,单位 ms)
  timeout: 3000,
  // 定义组件是否可挂起 | 默认值:true
  suspensible: false,
  /**
   *
   * @param {*} error 错误信息对象
   * @param {*} retry 一个函数,用于指示当 promise 加载器 reject 时,加载器是否应该重试
   * @param {*} fail  一个函数,指示加载程序结束退出
   * @param {*} attempts 允许的最大重试次数
   */
  onError(error, retry, fail, attempts) {
    if (error.message.match(/fetch/) && attempts <= 3) {
      // 请求发生错误时重试,最多可尝试 3 次
      retry()
    } else {
      // 注意,retry/fail 就像 promise 的 resolve/reject 一样:
      // 必须调用其中一个才能继续错误处理。
      fail()
    }
  }
})

参考动态和异步组件

4、resolveComponent

resolveComponent 只能在 render 或 setup 函数中使用。

如果在当前应用实例中可用,则允许按名称解析 component

返回一个 Component。如果没有找到,则返回 undefined

const app = Vue.createApp({})
app.component('MyComponent', {
  /* ... */
})
import { resolveComponent } from 'vue'
render() {
  const MyComponent = resolveComponent('MyComponent')
}

接受一个参数:name

  • 类型:String

  • 详细:

    已加载的组件的名称。

5、resolveDynamicComponent

resolveDynamicComponent 只能在 render 或 setup 函数中使用。

允许使用与 <component :is=""> 相同的机制来解析一个 component

返回已解析的 Component 或新创建的 VNode,其中组件名称作为节点标签。如果找不到 Component,将发出警告。

import { resolveDynamicComponent } from 'vue'
render () {
  const MyComponent = resolveDynamicComponent('MyComponent')
}

接受一个参数:component

  • 类型:String | Object (组件的选项对象)

  • 详细:

    有关详细信息,请参阅动态组件上的文档。

6、resolveDirective

WARNING

resolveDirective 只能在 render 或 setup 函数中使用。

如果在当前应用实例中可用,则允许通过其名称解析一个 directive

返回一个 Directive。如果没有找到,则返回 undefined

const app = Vue.createApp({})
app.directive('highlight', {})
import { resolveDirective } from 'vue'
render () {
  const highlightDirective = resolveDirective('highlight')
}

参数 接受一个参数:name

  • 类型:String

  • 详细:

    已加载的指令的名称。

7、withDirectives

withDirectives 只能在 render 或 setup 函数中使用。

允许将指令应用于 VNode。返回一个包含应用指令的 VNode。

import { withDirectives, resolveDirective } from 'vue'
const foo = resolveDirective('foo')
const bar = resolveDirective('bar')

return withDirectives(h('div'), [
  [foo, this.x],
  [bar, this.y]
])

参数  接受两个参数:vnode 和 directives

vnode

  • 类型:vnode

  • 详细:

    一个虚拟节点,通常使用 h() 创建。

directives

  • 类型:Array

  • 详细:

    一个指令数组。

更多内容:https://www.vue3js.cn/docs/zh/api/global-api.html#%E5%8F%82%E6%95%B0-4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3.0中全局注册组件版本1-官方 的相关文章

  • cmake(三十一)Cmake之get_filename_component指令

    一 基础知识 cmake获取 39 文件名 39 的 39 特定 39 部分 xff0c 提供了 39 三种 39 调用方式 注意 xff1a 39 key 39 关键字 方式1 方式2 方式3 二 实践 xff08 1 xff09 路径
  • cas 6.2 Incompatible because this component declares an API of a component compatible with Java 11

    最近用到cas6 2的项目 配置基本按下面的来 其中配置jdk什么的都是百度的 使用cas overlay template 6 2服务部署到整合cas client 爱学习的老王的博客 CSDN博客 cas overlay 但是导包出现国
  • idea使用tomcat启动,报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost]

    报错内容如下图 xff1a org apache catalina LifecycleException Failed to start component StandardEngine Catalina StandardHost loca
  • vue报错:Component name “xxx“ should always be multi-word

    这个问题困扰我这个菜鸡很久了 xff0c 当我run serve的时候总是会报错Component name xxx should always be multi word 一直以为是命名的问题 xff0c 可是改了又改还是不行 xff0c
  • vue/multi-word-component-names

    解决方法一 xff1a vue config js中添加一行 xff08 这种方式试完还是有报错显示 xff0c 但是项目可以运行 xff09 span class token keyword const span span class t
  • vue3.2结合element-plus实现一个全局分页组件

    最近开始学习vue3 0的api语法 通使用vue3 0 element plus搭建一个模板 把常用的组件封装一下 常用的分页组件 通过封装之后 粘贴复制 开箱即用 首先安装vue3 2版本和element plus 分页组件
  • Vue之事件绑定

    何为事件绑定 当我们开发完UI界面后 还需要和用户交互 所谓交互也就是用户可以点击界面上的按钮 文字 链接等以及点击键盘上的按钮 我们开发的程序可以做出对应的反应 做出的反应会通过UI界面再反馈给用户 或是对话框 或是跳转到新页面 总之就是
  • 探究vite——新一代前端开发与构建工具(一)

    Vite 法语意为 快速的 发音 vit 是一种新型前端构建工具 能够显著提升前端开发体验 它主要由两部分组成 一个开发服务器 它基于 原生 ES 模块 提供了 丰富的内建功能 如速度快到惊人的 模块热更新 HMR 一套构建指令 它使用 R
  • vue component使用,动态加载子组件,调用子组件方法

    1 vue component使用 component组件 单独拿出一个组件来专门进行切换使用 官方文档 https cn vuejs org v2 guide components html 动态组件 https cn vuejs org
  • vue3的slot插槽用法,`slot-scope` are deprecated

    前言 vue3的插槽使用方法发生了改变 和vue2相比较 使用vue2的写法 会报错 slot scope are deprecated vue2 上下对应 title是自己随便起的名字 1 定义一个普通的插槽 可以用div 任何标签 di
  • vue2-element,vue3-element-plus 的列表翻页的序号

    前言 这里整理下 vue2 vue3中用饿了么框架的列表 序号随页增加的功能 vue2 page 当前页 pageSize 一页显示多少条 type index index indexMethod 序号翻页连续排序 indexMethod
  • vue3+ts+setup获取全局变量getCurrentInstance

    前言 vue3的 setup中是获取不到this的 为此官方提供了特殊的方法 让我们可以使用this 达到我们获取全局变量的目的 但是在使用typescript的时候 就会有一些新的问题产生 这里来做一个整理 vue3官方提供的方法 1 引
  • 腾讯云部署(gin框架+vue3.0)前后端分离项目

    腾讯云部署 gin框架 vue3 0 前后端分离项目 项目架构和部署工具 项目工具 部署工具 后端项目准备及部署 购买云端服务器 以下是腾讯云 阿里云请点击我 https blog csdn net it vegetable article
  • vue3 使用QrCode生成二维码

    官网地址 QrCode官网 第一步 安装 npm install save qrcode vue 第二步 引入并注册 import QrcodeVue from qrcode vue export default defineCompone
  • vue3.0 nextTick

    将回调推迟到下一个DOM更新周期之后执行 在更改了一些数据以等待DOM更新后立即使用它 import createApp nextTick from vue 方式一 const app createApp setup const chang
  • React 封装组件的一些心得(一)

    起因 最近公司业务不是那么多 就抽空写了下组件库的东西 然后看了很多组件库的源码 由于我这里封装的主要是 taro 移动端的组件 所以主要是参考了 antd mobile react vant tard 等组件库 然后根据他们的源码 整合出
  • vue3+vite的项目中实现右键事件的神器

    前言 vue3 vite的项目中实现右键事件的神器 imengyu vue3 context menu 实现效果 使用步骤 1 安装 npm cnpm pnpm yarn 都可以 装上下面插件 imengyu vue3 context me
  • vue3+pinia的使用,刷新后不丢数据

    前言 好用的状态管理器 vue3中出来的pinia 相比较vuex来说 更加轻便 使用也更方便 官方文档 点我 github地址 点我 pinia与vuex相比较优点 pinia 是轻量级状态管理工具 大小只有1KB pinia 模块化设计
  • vue3中实现音频播放器APlayer

    前言 vue2的时候 分享了一个很好用的插件是vue aplayer 但是他是不支持vue3的 这里分享vue3使用APlayer来实现一个播放器的方法 实现效果 官方 git地址 点我 api地址 点我 实现步骤 1 安装 npm npm
  • vue3.0项目报错:删除node包重新装报错

    前言 vue3 0的项目删除node包以后重新装项目 会报错 vue loader v16 找不到 安装以后下次再删包 再装会报错webpack的问题 解决办法 在新建项目后 打开pack json文件 找到 devDependencies

随机推荐

  • tflearn anaconda 安装过程记录

    准备工作 gcc升级为4 8 2glibc升级为2 18 opt xxx xxx components ficlient bigdata env 里加入 export LD LIBRARY PATH usr local lib usr lo
  • SpringBoot调取OpenAi接口实现ChatGpt功能

    很高兴和大家分享我实现的一个小项目 利用 Spring Boot 实现了一个 ChatGpt 对话系统 在本文中 我将详细介绍这个项目的实现步骤 以及代码实现 什么是 ChatGpt ChatGpt 是一种基于 GPT 技术的对话系统 能够
  • 剑指offer45 把数组排成最小的数

    目录 题目链接 解法1 调用sort 解法2 冒泡排序的扩展 题目链接 链接 其实这道题 大概看完就知道是一个排序的问题 无非就是数组中的元素以一个合适的位置排好序 这样从头加到尾 组成的整体数字最小 题目中也暗示你排序问题了 个人捉摸了一
  • linux系统启动过程(方便记忆步骤&详细步骤)

    linux系统的启动过程 大致可以分为五个阶段 内核的引导 运行init 系统初始化 建立终端 用户登录系统 大致步骤 1 内核的引导 操作系统 gt boot 2 运行init 操作系统 gt boot gt init进程 配置文件 et
  • Wix toolset打包工具介绍

    Wix Toolset工具目前是windows平台应用打包比较好用的工具 最大的两个优点是功能全面和免费软件 下面来介绍一下这个软件 Wix Toolset官网 1 Wix的核心是一组build工具 Wix来生成windows安装包的理念跟
  • opencv学习笔记之十五——最小外接矩形(RotatedRect返回角度angle问题)

    最近在看一个车牌识别开源项目时 对其中RotatedRect的角度属性理解得不清楚 也查找了大量博客 得出了基本结论 最后通过实验进一步进行了验证 RotatedRect该类表示平面上的旋转矩形 有三个属性 矩形中心点 质心 边长 长和宽
  • 数据结构-1

    基本概念 数据 data 计算机中指的是能输入到计算机中并被计算机程序处理的符号的总称 比如 图像 声音等都可以在进行编码后被称为数据 再在计算机中进行处理 数据元素 data element 数据的基本单位 数据元素可由多个数据项 dat
  • Takeown、Cacls、Icacls-文件、文件夹夺权用法

    常用示例如下 takeown f 文件名 获取该文件的所属权 takeown f r d n 文件夹 获取整个文件夹及其下面子目录文件的所属权 takeown f a r d y 强制将当前目录下的所有文件及文件夹 子文件夹下的所有者更改为
  • 算法-DS证据理论

    适用领域 信息融合 条件 证据独立 特点 1 满足比贝叶斯理论更弱的条件 不必满足概率可加性 2 具有直接表达 不确定 和 不知道 的能力 这些信息保存在mass函数中 并在证据合成过程中保留了这些信息 3 证据理论不但允许人们将信度赋予假
  • 解决插入word文档中的图片变得不清晰问题

    打开文件 找到选项 打开高级 找到不压缩图片并勾选 确定并退出
  • saltstack安装

    ubuntu install 1 ppa install sudo add apt repository ppa saltstack salt sudo apt get update sudo apt get install salt ma
  • 字符串替换C++实现

    题目 请实现一个函数 将一个字符串中的每个空格替换成 20 例如 当字符串为We Are Happy 则经过替换之后的字符串为We 20Are 20Happy 思路 给定了字符串 和字符串最大长度 替换空格为 20 找出所有空格 计算新的长
  • vs 自定义 格式化代码快捷键

    vs 自定义 格式化代码快捷键 工具 选项 环境 键盘 编辑 设置选定内容的格式 全局 输入自己想要的快捷键 分配 确定
  • sysdba不能远程登录

    sysdba不能远程登录这个也是一个很常见的问题了 碰到这样的问题我们该如何解决呢 我们用sysdba登录的时候 用来管理我们的数据库实例 特别是有时候 服务器不再本台机器 这个就更是有必要了 当我们用sqlplus as sysdba 是
  • 怎么利用数据库做分布式共享锁

    一 适用环境 1 数据库集群模式 1主多从 2 单机数据库 3 数据库必须提供行级锁功能 二 原理 cas算法 代码 更新当前值为new updateCurrentValue id new old old 通过id 查到的值 new 期望的
  • 变量交换的四种方式

    可以使用以下方法对两个变量进行交换 方法一 定义一个中间量 define CRT SECURE NO WARNINGS include
  • VUE 项目文件夹上传下载解决方案

    原理 js将大文件分成多分 全部上传成功之后 调用合并接口合成文件 如果传输中断 下次上传的时候过滤掉已经上传成功的分片 将剩余的分片上传 成功之后合并文件 前置条件 获取uoloadId接口 用于标记分片 分片上传接口 合成文件接口 后端
  • matplotlib画图间隔范围等设置

    import matplotlib pyplot as plt from matplotlib pyplot import MultipleLocator 从pyplot导入MultipleLocator类 这个类用于设置刻度间隔 x va
  • Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程

    文章目录 Web抓包 火狐抓包 谷歌抓包 小技巧 结束 Web抓包 火狐抓包 环境需求 火狐浏览器 代理插件 1 打开测试工具BurpSuite 默认工具拦截功能是开启的 颜色较深 我们点击取消拦截 下图取消拦截状态 数据包可以自由通过 2
  • vue3.0中全局注册组件版本1-官方

    前言 在对vue3 0的使用和学习中 发现了很多和以前不一样的方法 这里聊一聊vue3 0中给我们提供的全局的注册组件方法 官方文档 入口 目录 具体方法介绍 1 前提 返回一个提供应用上下文的应用实例 应用实例挂载的整个组件树共享同一个上