如何返回 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? 的相关文章

  • 设置储值的 Svelte 用户注册问题

    helo 我正在尝试注册用户 成功后将 setContext 设置为新注册的用户 然后导航到主页 服务器正确响应并注册用户 但是当调用 setContext 时 我收到以下错误 index mjs 552 Uncaught 在承诺中 错误
  • Svelte/Typescript 错误:类型声明期间出现“意外标记”

    所以我有一个Svelte启用了 TypeScript 的应用程序 但现在我在运行它时遇到问题 Error Unexpected token Note that you need plugins to import files that ar
  • 仅在客户端运行某些代码的最佳方法是什么?

    我正在尝试在 Sapper 中实现 firebase 我安装了模块 firebase app firebase auth firebase firestore 然后编写了一个配置文件 import firebase from firebas
  • 使用 Vite 将 JS 和 CSS 捆绑到单个文件中

    我正在费尽心思地弄清楚如何在我的 Svelte 项目中从 Vite 构建单个 js 文件 其中包括我的 Svelte 项目中构建的所有 javascript 和 CSS 默认情况下 Vite 将应用程序捆绑到一个 html 文件 这可以 两
  • 我可以保留“未使用的CSS选择器”吗?

    我注意到 svelte 会自动清除我的 css 所有 未使用的 css 选择器 都将被删除 例如 p class blue This is a paragraph p 红色 类的样式将被删除 如何保留 blue 选择器 我想稍后某个时候使用
  • Sapper/Svelte:如何添加 Markdown 文件?

    我正在使用 Sapper 使用默认创建博客工兵模板汇总 https github com sveltejs sapper template rollup 在博客文件夹中 它确实提到了从 Markdown 文件生成数据 但我找不到该怎么做 我
  • 从 file:// 运行 Svelte 应用程序,无需服务器

    我需要运行一个 Svelte 应用程序并且能够在没有服务器的情况下执行它 对于其他框架 这是可能的 因为它只是 javascript 但我找不到一种方法来单击我的 index html 并运行用 Svelte 构建的应用程序 我需要运行一个
  • 在 Svelte 中传递道具

    我正在尝试使用 Svelte Svelte Routing 和 Firestore 实现一个相当标准的博客应用程序 但我认为我误解了 props 在组件之间传递方式的基本部分 我的初始代码基于 Fireship io 上的优秀教程 该教程按
  • svelte 包应该是依赖项还是 devDependency?

    我知道已经有很多帖子讨论了两者之间的区别dependency and devDependency但我没有找到任何解释 svelte 情况的信息 所以让我们在这里打开这个 在大多数 svelte 包中 比如svelte 材质 ui https
  • 当我添加到数组时,svelte 列表不会更新

    我刚刚开始使用 svelte 所以 这可能是一个菜鸟问题 我有一个列表 我可以从数组中删除项目 并且列表 each 更新没有问题 但是如果我将一个项目添加到数组中 列表不会重新绘制 直到我删除另一个项目 https svelte dev r
  • Svelte商店功能更新

    Svelte 存储文档显示正在更新字符串或整数 但我没有在存储中找到任何动态函数 我不明白如何制作getData作为可写函数以通知 html 发生的变化 在下面的示例中 我想b后显示updateKey函数被调用 您将在此处找到 REPL 中
  • 使用adapter-static时如何在sveltekit上使用获取参数?

    我在构建时收到错误消息 无法访问url searchParams在启用预渲染的页面上 如何加载和使用get参数 svelte config js import adapter from sveltejs adapter static imp
  • 如何在 Svelte 中将 css 从 node_modules 添加到 template.html

    我有一个 sapperjs 应用程序 就像您通过调用获得的应用程序一样npx degit sveltejs sapper template my app 我想添加一种字体 普通人可能会添加这样一行app template html 网络原因
  • 绑定到 `onbeforeunload`

    我希望绑定到
  • Svelte:如何等待组件渲染

    我正在制作一个基于套接字连接的简单应用程序 基本上 一个用户决定其他用户可以看到什么 功能之一是为其他用户启动计时器 因此 有一个带有timerState变量和startTimer函数的Timer组件 当用户连接到套接字时 计时器组件与整个
  • 是否有可能以某种方式直接更改派生存储的值?

    我目前正在使用 SvelteKit 我有一个derivedstore 这是必要的 因为它依赖于另一个商店 现在我需要更改一些值derived直接存储 问题是derived据我的理解 商店是不可修改的 有没有办法改变a的值derived直接存
  • 如何向 SvelteKit/Vite 应用添加版本号?

    我正在尝试在我的 SvelteKit 应用程序中创建一个系统 它会在某个页面上向您显示有关当前应用程序版本的信息 最好是 Git 提交哈希和描述 我尝试使用Vite的定义功能 https vitejs dev config define在构
  • 如何在 svelte 中单击时导航到不同的路径?

    目前在拥有on click preventDefault gt showDetail id and in showDetail我想导航到特定的功能id我正在传递点击按钮 我尝试了常规的javascript方法location assign但
  • Svelte 路线给我 404

    我在 Svelte 中为我的应用程序创建了一个简单的路由器 如果我从导航栏访问链接 它就可以工作 如果我重新加载页面 它会给我 404 为什么
  • 如何使用 vite 在 svelte 中包含 WASM npm 模块?

    我正在使用 vite 运行一个 svelte 应用程序 并使用 WASM 包构建wasm pack target web 如果我直接将包与 vanilla JS 一起使用 我可以编写如下内容 在 HTML 文件中 其中greet是我的之一w

随机推荐

  • 使用剪贴板的 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 或组件为内容的工具提示 无需将组件包装在