Sapper/Svelte 可以有条件地导入组件吗?

2024-03-18

在 Sapper 中,我仅在客户端渲染时才尝试导入组件(使用onMount)。有没有类似React的东西Suspense and React.lazy?或者还有其他方法吗?


你当然可以这样做,是的:

<script>
  import { onMount } from 'svelte';
    
  let Thing;
    
  onMount(async () => {
    Thing = (await import('./Thing.svelte')).default;
  });
</script>

<svelte:component this={Thing} answer={42}>
  <p>some slotted content</p>
</svelte:component>

演示在这里 https://svelte.dev/repl/16b375da9b39417dae837b5006799cb4?version=3.25.0.

或者,您可以将其包装到一个组件中:

<!-- Loader.svelte -->
<script>
  import { onMount } from 'svelte';
    
  let loader;
  let Component;
    
  onMount(async () => {
    Component = (await loader()).default;
  });
    
  export { loader as this };
</script>

<svelte:component this={Component} {...$$restProps}>
  <slot></slot>
</svelte:component>

{#if !Component}
  <slot name="fallback"></slot>
{/if}
<Loader
  this={() => import('./Thing.svelte')}
  answer={42}
>
  <p>some slotted content</p>
  <p slot="fallback">loading...</p>
</Loader>

演示在这里 https://svelte.dev/repl/c2f6ef6b1b194467945d5f9c48b779b8?version=3.25.0。这种方法的一个警告是,除了default不会被“转发”到底层组件。

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

Sapper/Svelte 可以有条件地导入组件吗? 的相关文章

随机推荐

  • Laravel 模型工厂播种机将两个模型分配给一个模型

    我正在开发 Laravel 9 项目 需要创建大量测试数据 我有一些模型 我想通过我的模型工厂自动将它们链接起来 这是我的模型关系 User Company 用户可以拥有一家公司 但他们可能没有一家 Affiliate 附属机构拥有user
  • scikit 多标签分类:ValueError:错误的输入形状

    我相信SGDClassifier with loss log 支持多标签分类 我不必使用 OneVsRestClassifier 检查这个 https stackoverflow com questions 15036630 batch g
  • Gui 工具包,我应该使用哪个? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在编写一个相当大且复杂的数据分析程序 我认为是时候为该程序构建一个 GUI 了 所以我的问题是 我应该使用哪个 GUI 工具包 我对编码和构建 G
  • Phonegap 1.7中的Childbrowser插件只能第一次打开

    Phonegap 1 7 中的 Childbrowser 插件只能在第一次打开 我正在使用 Phonegap 1 7 和 Childbrowser 仅在子浏览器第一次工作时 当我关闭 Childbrowser 按下完成按钮 后 当我尝试打开
  • 如何仅删除父表中由子表中的外键引用的行

    我想从父表中删除行 元组 但它抛出错误消息 因为它的子表中有外键引用 但是 就我而言 我想仅删除父表中的记录并保留子表中的数据 有可能实现这一目标吗 我知道的用法ON DELETE CASCADE https stackoverflow c
  • ExtJS“日期字段”验证覆盖

    我需要一个具有一些自定义行为的日期列 特别是我需要能够在同一字段中输入日期或年龄 年龄保持呈现为年龄 日期保持呈现为日期 例如 输入 23 将使 23 在字段中保留为有效值 或者输入 22 1 88 将使 22 1 88 保留为有效值 所以
  • 在第一行有 rowspan 的情况下,在表格的第一行设置 css 样式

    我有很多表 想要在表的第一行设置 css 样式 前提是第一行有行跨度 table tbody tr td width 110 Name td td width 110 Size td td width 110 Status td tr tr
  • Vega-Lite 中的平行坐标?

    是否可以创建平行坐标维加精简版 https vega github io vega lite 我正在寻找一个简单但功能强大的 JavaScript 绘图库 并且需要支持平行坐标 I have googled https www google
  • 如何使用 PHP 将 RSS XML 提要转换为数组

    我希望标题代表全部 如何使用 PHP 将 RSS XML 提要转换为数组 如何才能做到这一点 例如 我正在使用以下网址 这导致了 XML 模式 我需要使用 PHP 将其转换为数组格式 任何帮助将不胜感激和感激 提前致谢 一步步 How to
  • 如何在没有 web.xml 的情况下将 App Engine 项目更新到 Java 11?

    我有一个应用程序引擎项目 Here https github com KevinWorkman GoogleCloudExamples tree master hello world是一个示例存储库 但它只包含几个文件 pom xml
  • viewWillAppear 子视图

    我有 UIScrollView 与多个 UIVIew 子视图 我想更新每个 UIView 显示在 UIScrollView 的可见部分中时显示的数据 触发的回调是什么 我尝试了 viewWillAppear 但似乎没有被调用 谢谢 你必须自
  • XQuery 中的 element() 与 node()

    有人可以告诉我两者之间的确切区别吗node and element XQuery 中的类型 该文档指出element 是一个元素节点 而node 是任何节点 所以如果我理解正确的话element 是一个子集node 问题是我有一个像这样的
  • 如何覆盖 Qwik 中的默认 404 屏幕?

    我正在测试 Builder IO 中的 Qwik Javascript 框架 但找不到任何文档可以指导我自定义 404 页面的方向 我正在使用 Qwik 的 qwik city 插件 核实 这是关于如何渲染404页面的 https qwik
  • 查找到另一组任意点的范围内的所有点

    我有两组点A and B 我想找到所有点B是在一定范围内的r to A 其中一点b in B据说在范围内r to A如果至少有一个点a in A其 欧几里得 距离b等于或小于r 两组点中的每一个都是连贯的点集 它们是根据两个不重叠对象的体素
  • 无法获得多视图控制来更改视图

    我有一个多视图控件 有两个视图 View1 是默认视图 View2 是新视图 当最终用户单击按钮时 我想将视图更改为 View2 无论如何我似乎都无法实现这一目标 ASP NET 代码
  • python/pycharm项目在调试模式下产生分段错误,但在运行模式下不会产生分段错误

    奇怪的是 在调试模式下 如果脚本在通常会发生段错误 没有断点 的地方停止 通过断点 然后恢复 则不会发生段错误 很奇怪吧 本项目使用pycharm和pygame 操作系统是 windows 10 该项目包含跨 8 个模块的约 1500 行代
  • 如何在 Qt 应用程序中使用样式表更改 QPushButton 图标大小

    是否可以使用样式表设置和更改 QPushButton 上的图标大小 我需要这个基于 qt 的模板 客户可以使用样式表对其进行样式化 在样式表中使用以下代码 qproperty iconSize 24px
  • 如何将 SQL 大容量复制与 Dapper .Net 结合使用?

    我正在使用 Dapper net 在 SQL 表中进行批量插入操作 我正在考虑使用 SQKBulk Copy 与 Dapper Net 但没有任何经验如何将 SqlbulkCopy 与 Dapper Net 一起使用 非常感谢你的帮助 使用
  • Windows 7 和 Windows Server 2008 R2 之间的差异

    Windows 7 或 Windows Server 2008 R2 中包含某些功能和 API 但另一个则不包含 在哪里可以找到差异的具体列表 如果程序要兼容两者 有什么需要特别避免的吗 当然 这个问题可以推广到任何版本的 Windows
  • Sapper/Svelte 可以有条件地导入组件吗?

    在 Sapper 中 我仅在客户端渲染时才尝试导入组件 使用onMount 有没有类似React的东西Suspense and React lazy 或者还有其他方法吗 你当然可以这样做 是的