如何从 Vue Composition API / Vue 3.0 + TypeScript 中的组合函数访问根上下文?

2023-11-26

我想创建可重用的包装函数写在打字稿用于通过使用触发 toast 通知复合函数,如 Vue 3.0 的当前规范中所定义:组合 API RFC.

此示例使用 BootstrapVue v2.0 toast 组件。对于 Vue 2,它将通过以下方式调用this.$bvToastVue组件实例注入在根上下文中:

this.$bvToast.toast('Error happened', {
  title: 'Oh no',
  variant: 'danger'
});

这个类似服务的组合函数看起来很像这样:

// File: @/util/notify.ts
export function useNotify() {
  const notifyError = (title: string, msg: string) => {
    // How to access context.root as in a function component, without passing it to this function?
    context.root.$bvToast.toast(msg, {
      title,
      variant: 'danger'
    });
  };

  return { notifyError};
}

export default useNotify;

并且会像这样使用:

// Use in your functional component:
import { createComponent } from '@vue/composition-api';

import { useNotify} from '@/util/notify';

export default createComponent({
  name: 'MyFailingComponent',
  setup() {
    const { notifyError } = useNotify();

    notifyError('Request error', 'There was an error processing your request, please try again later.');

    return {};
  }
});

还有:

import { getCurrentInstance } from 'vue'  // or from '@vue/composition-api'

这将获得调用组件的root此方法的上下文。

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

如何从 Vue Composition API / Vue 3.0 + TypeScript 中的组合函数访问根上下文? 的相关文章

随机推荐

  • 将 GDAL/OGR 合并到 iOS 项目中 - 快速指南

    问题是这样的 GDAL是一个出色的开源库 旨在管理复杂的 GIS 数据 栅格数据和矢量数据 它完全是为Mac OS 由 William Kyngesburye 提供 和其他平台 但不适用于 iOS 浏览网络 您可以找到有关创建 iOS 库主
  • Python Killed:使用从 2 个 csv 文件创建的字典运行代码时为 9

    我正在运行一个一直对我有用的代码 这次我在 2 个 csv 文件上运行它 data 24 MB 和 data1 475 MB data 有 3 列 每列约 680000 个元素 而 data1 有 3 列 每列约 33000000 个元素
  • 更改Jfreechart中图表的X轴起始值

    我正在计算图像红色分量的直方图并将其存储在 redhisto 中 数组的索引代表强度 0到255 该值表示具有该强度的像素数 然后使用 JFreeChart 绘制这些值 我的问题是 如何让X轴的值从0开始 现在是从负数开始 Can we c
  • 术语“全局属性”和“全局变量”是同义词吗?

    全局对象充当顶级词法环境 作用域链的顶部 如果您愿意的话 这意味着可以通过直接引用 如变量 访问全局属性 global code this foo 1 creating a global property foo accessing the
  • 从对象生成 DTO

    我想从我现有的一些对象中自动生成一些 DTO 我想知道是否已经存在可以使用的 Resharper DevExpress 或 VSX 开源工具 我需要一个工具来查看我的代码并让我选择我想要的属性包含在我的 DTO 中 然后基于该生成一个类 另
  • Lighthouse 错误:“表单元素没有关联的标签”

    如何修复此灯塔错误 表单元素没有关联的标签
  • Flutter 按时间戳对 Firebase 快照进行排序

    I m trying to sort snapshot by timestamp but returns original order data structure looks like this 我有两个快照 时间戳是 153602546
  • 电话验证正则表达式

    我正在使用此模式来检查电话号码的验证 0 9 9 15 它适用于0771234567 and 0771234567 但我希望它适用于077 1234567 and 077 1234567和 077 1 23 45 67 和 077 123
  • 在 Verilog 中生成 For 循环中实例化模块

    我正在尝试使用 Verilog 实例化一些模块generate块 因为我将实例化可变数量的它们 genvar i generate for i 1 i lt 10 i i 1 begin status whatever status clk
  • 无法使用 Rails 5.2、AWS S3 和 ActiveStorage 自动加载常量 ActiveStorage::Blob::Analyzable 错误

    我已经和这个家伙战斗了一段时间了 并且已经完成了所有的谷歌 here here 以及许多同样无益的其他人 但无济于事 官方错误是这样的 在我的创建方法的第一行调用 无法自动加载常量 ActiveStorage Blob Analyzable
  • 是否存在 SHA1(x) 等于 x 的 x?

    有没有一个x where SHA1 x x 我正在寻找证据或强有力的论据来反对它 与问题相同的论点适用于此有MD5定点吗 IE 对于随机选择的函数 该值约为 63
  • Lua表的一个有趣现象

    我是Lua新手 这几天正在学习table的用法 从教程中我知道Lua对待数字索引项和非数字索引项的方式不同 所以我自己做了一些测试 今天我发现一个有趣的现象 我无法解释它 The code t 1 2 3 a a b b print t g
  • android webview youtube 嵌入视频自动播放不起作用

    我无法自动播放我的视频 请帮忙 我的sdk版本 android minSdkVersion 14 android targetSdkVersion 19 gt 我尝试按照代码中指定的方式放置 JavaScript public void o
  • for循环中分号放错位置[重复]

    这个问题在这里已经有答案了 当我做作业时 我犯了一个小错误 在 for 循环中像下面的代码一样 for i 0 i
  • 如何从表单外部捕获表单的某些事件?

    我正在做一些需要监控多种表格的事情 从表单外部 并且不将任何代码放入表单内 我需要以某种方式从这些表单捕获事件 很可能以 Windows 消息的形式 但是 如何从与其相关的类外部捕获 Windows 消息呢 我的项目有一个对象 它包装了它正
  • 如何设置 C++ 函数以便 p/invoke 使用它?

    希望这是一个无脑简单的问题 但这表明我缺乏 C 专业知识 我是一名 C 程序员 过去我使用 P Invoke 和其他人的 C C dll 进行了大量工作 然而 这次我决定自己编写一个包装器 C dll 非托管 然后从 C 调用我的包装器 d
  • 如何使用 Meteor.js 对 Dropbox API 进行 CURL 调用

    我是 Meteor js 新手 希望让我的 Web 应用程序能够与 Dropbox Core API 配合使用 我无法全神贯注于使用 Meteor js 中的 HTTP 包进行 API 调用 如何在 Meteor 中进行类似于下面的 Cur
  • 将常数(2 的幂)除以整数的技巧

    NOTE这是一个理论问题 我对实际代码的性能感到满意 我只是好奇是否有替代方案 有没有一种技巧可以将常量值 本身是 2 的整数幂 除以整数变量值 而无需使用实际的除法运算 The fixed value of the numerator d
  • Ngit 与私钥文件建立连接

    我正在尝试使用 NGit 连接到 Github 即使用私钥和密码 有人可以引导我完成它吗 我的正常获取是 var git Git CloneRepository SetDirectory properties OutputPath SetU
  • 如何从 Vue Composition API / Vue 3.0 + TypeScript 中的组合函数访问根上下文?

    我想创建可重用的包装函数写在打字稿用于通过使用触发 toast 通知复合函数 如 Vue 3 0 的当前规范中所定义 组合 API RFC 此示例使用 BootstrapVue v2 0 toast 组件 对于 Vue 2 它将通过以下方式