如何返回 Svelte 组件的渲染 HTML?

2024-01-11

我很难制作一个会消失的工具提示use:action。我的要求是:

  1. 创建以 HTML 或组件为内容的工具提示
  2. 无需将组件包装在<Tooltip><element></Tooltip>
  3. 连接到预制库以实现灵活性

请参阅下面我的示例代码。由于 Tippy.js 依赖性,它在 REPL 中不起作用,但我确实可以在我的应用程序中使用简单的 HTML。这就是为什么我的想法是我应该寻求渲染一个组件,它像其他任何组件一样承认 props,然后以某种方式获取它的 HTML 并将其投入使用:动作调用。 (参见“内容:”嘿,我工作了!'") 它应该像 jQuery 工具提示时代一样简单易用。

REPL 链接:https://svelte.dev/repl/e8fdf98eb42445e3b791d7c908581a71?version=3.17.3 https://svelte.dev/repl/e8fdf98eb42445e3b791d7c908581a71?version=3.17.3


要真正“返回渲染的 HTML”,您需要使用以下命令进行编译generate: 'ssr' option https://svelte.dev/docs#svelte_compile,并使用Cmp.render()功能。但是你不能在 DOM 中使用这样的组件......

您无法真正获取组件的内容,但可以使用如下操作获取任何元素的 HTML:

<script>
const logHtml = el => {
  console.log(el.innerHTML)
}
</script>

<div use:logHtml> ... </div>

或者,简单地说,bind:this关于元素:

<script>
  let el
  $: if (el) console.log(el.innerHTML)
</script>

<div bind:this={el}> ... </div>

但就您而言,您似乎想要的是将组件直接渲染到工具提示的元素中。您可以使用new MyComponent https://svelte.dev/docs#Client-side_component_API为了那个原因。

这是一个渲染自定义组件的示例操作tippy.js (see 更新的 REPL https://svelte.dev/repl/7563f00e70e8448bab94bae4ab1b48c5?version=3.17.3):

export function tipz(elem, { content, props, ...opts }) {
  let cmp

  const tp = tippy(elem, {
    onCreate() {
      cmp = new content({
        target: instance.popper.querySelector(".tippy-content"),
        props,
      });
    },
    ...opts
  })

  return {
    update(params) {
      // ensure reactivity
      if (cmp) {
        cmp.$set(params.props)
      }
    },
    destroy() {
      tp.destroy();
      if (cmp) {
        // cleanup component
        cmp.$destroy();
      }
    }
  };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何返回 Svelte 组件的渲染 HTML? 的相关文章

随机推荐

  • 使用剪贴板的 C# 多线程应用程序

    我正在开发一个多线程应用程序 我面临着必须使用剪贴板的问题 我正在使用 Qlikview API 并且我需要将表格复制到 Excel 中 问题是我认为会发生什么是这样的 在线程 1 上 我打开 QW 文档并复制表格 在将其粘贴到 Excel
  • 我应该在我的应用程序中使用 iOS 4 新功能吗?为什么?

    我正在更新我的一个应用程序 但我遇到了一个困境 在我想添加 iOS 4 独特功能的地方 我别无选择 只能仅针对支持的设备实现它们 这里没有困境 困境是当我有两种方法可以达到相同的效果时 一种是 旧方式 另一种是 新方式 一个很好的例子是使用
  • 在 Git Bash 中显示 SSH 密钥文件

    如何查看 Git Bash 中使用了哪个 SSH 密钥文件 我尝试了 git config get all 但收到错误消息 错误 参数数量错误 用法 git config 选项 使用哪个 SSH 密钥不是由 Git 决定的 而是由 SSH
  • psql: FATAL: 用户 Windows 8 密码验证失败

    我在 Windows 上安装了 postgresql 安装时它要求为该帐户创建一个用户 这在我的计算机上创建了一个名为 postgres 的新 Windows 用户 我也为其创建了一个密码 现在我想在 Windows 命令行上运行 psql
  • fork 的 Maven 项目使用什么版本标签?

    我经常不得不 fork 一个使用 Maven 的 Java 项目 通常在 github 上 当我分叉项目并进行更改时 我通常希望将版本剪切到我自己的私有 但在互联网上 maven 存储库 因此 我的自定义版本的版本标签应该是什么的问题 我做
  • 动态加载多个 JS 文件并在所有文件准备就绪时触发回调

    我有几个 JS 和 CSS 文件 需要使用 JavaScript 动态附加到 DOM 所描述的方法here https www nczonline net blog 2009 07 28 the best way to load exter
  • C# 中的私有静态变量和线程安全

    我的一位同事在多线程 C 应用程序中编写了以下代码 public class1 private static partialClass var1 new partialNonStaticClass public static method1
  • java.lang.SecurityException:发送短信:uid 10282 没有 android.permission.SEND_SMS

    我的应用程序不断崩溃并出现以下错误代码 java lang SecurityException Sending SMS message uid 10282 does not have android permission SEND SMS
  • 内核死亡并退出代码 1(VS 代码)

    这是我在 vs code 的交互窗口中运行代码时显示的错误消息 C Users rohit AppData Roaming Python Python38 site packages traitlets traitlets py 2195
  • NSTextFinder + 以编程方式更改 NSTextView 中的文本

    我有一个 NSTextView 我想使用查找栏 文本可以选择 但不可编辑 我以编程方式更改文本视图中的文本 当 NSTextFinder 在文本更改后尝试选择下一个匹配项时 此设置可能会崩溃 NSTextFinder 似乎保留了增量匹配的过
  • 当我改变页面时cookie消失

    PHP 我在我的login php页面中以这种方式设置cookie setcookie cookie id id 我打印 cookie 并且看到正确的值 但是当我使用以下命令更改页面时 header login url 我丢失了所有 coo
  • Oracle - 功能不起作用

    Oracle 功能不起作用 所以我不知道我做错了什么 我已经花了几个小时了 非常感谢一些帮助 所以基本上我有两张桌子 一张叫做student这是一个学生名单student no是主键 另一个表称为enrol其中基本上包含了学生注册的课程列表
  • D3D11:从 6 个图像创建立方体贴图

    如何在 D3D11 中从 6 个图像创建立方体贴图 我发现的所有示例仅使用一个 dds 具体来说 如何上传立方体纹理的各个面 它的工作原理如下 D3D11 TEXTURE2D DESC texDesc texDesc Width descr
  • 列出 ZIP 文件的内容

    按照技术配方的示例 我成功列出了 ZIP 文件的内容 使用 7 Zip FOR F tokens delims A in dir b s zip do 7z exe l r A gt gt listing txt 但是 这只是将 ZIP 文
  • JavaScript 无法正确呈现此数字:3494793310847464221

    我有一个有趣的问题 我一直在使用 javascript 做一些工作 数据库 ID 为 3494793310847464221 现在它作为数字输入到 javascript 中 但它使用该数字作为不同的值 无论是在输出到警报以及传递给另一个 j
  • 我希望我的视图能够获取属性的值

    我的观点不是获取我为模型设置的属性的值 要在 docController 中执行此操作 将像这样调用 var docTemplateID this get docTemplateID or and var model this get mo
  • 当 ruamel.yaml 从字符串加载 @dataclass 时,不会调用 __post_init__

    假设我创建了一个 dataclass class Foo 并添加了一个 post init 执行类型检查和处理 当我尝试yaml load a Foo目的 post init 不被调用 from dataclasses import dat
  • 通过引用的字典值

    在我们的应用程序中 我们有一些来自翻译的字符串 可以包含变量 例如在Can i have a beverage the beverage 部分应替换为变量 我当前的实现是通过拥有所有变量的名称和值的字典 然后替换正确的字符串来工作的 但是我
  • 图像高斯滤波的最佳西格玛?

    当对图像应用高斯模糊时 通常 sigma 是一个参数 示例包括 Matlab 和 ImageJ 人们如何知道西格玛应该是多少 有没有数学方法可以计算出最佳西格玛 就我而言 图像中的一些对象与背景相比更亮 我需要通过计算找到它们 我将应用高斯
  • 如何返回 Svelte 组件的渲染 HTML?

    我很难制作一个会消失的工具提示use action 我的要求是 创建以 HTML 或组件为内容的工具提示 无需将组件包装在