如何触发/强制更新 Svelte 组件

2024-03-04

我正在尝试了解 svelte 3 反应性的事情......

  1. 我想在单击按钮时强制刷新用户界面。我正在使用自定义组件AsyncFetcher接受 HTTP post 数据并返回data其插槽的对象(http post 结果)。

  2. 我想要一个禁用功能。因此,当单击“禁用”按钮时,将调用 http api,然后刷新数据视图。

<script>
    export let id

    function onDisable() {
        fetch('disable-api-url', {id: id})
        // Then ??
        // What to do after the fetch call, to refresh the view
    }
</script>

<AsyncFetcher postParam={id} let:data>
    {data.name}

    <button on:click={??}>Refresh</button>
    <button on:click={onDisable}>Disable Item</button>
</AsyncFetcher>

我尝试做on:click={() => id=id}欺骗它刷新也没有用。如果id应该是一个对象而不是字符串id={...id}本来可以,但不幸的是,这里的情况并非如此。

实现这一目标的正确方法是什么?


使用组件来管理获取是非常不传统的。通常你会在里面获取数据onMount,或在事件处理程序中:

<script>
  import { onMount } from 'svelte';

  let initialData;
  let otherData;

  onMount(async () => {
    const res = await fetch('some-url');
    initialData = await res.json();
  });

  async function update() {
    const res = await fetch('some-other-url');
    otherData = await res.json();
  }
</script>

{#if initialData}
  <p>the data is {initialData.something}</p>
{/if}

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

如何触发/强制更新 Svelte 组件 的相关文章

  • 架构独立的实体框架代码优先迁移

    我在使用针对 Oracle 数据库的实体框架迁移时遇到了麻烦 因为架构名称包含在迁移代码中 并且对于 Oracle 架构名称也是用户名 我的目标是拥有独立于模式的 Code First 迁移 能够拥有一组用于测试和生产环境的迁移 我已经尝试

随机推荐

  • Chartjs 条形图悬停时显示旧数据

    我有一个使用 Chart js 创建的条形图 页面加载时一切正常 但是当我使用日期范围选择器更改时间范围时 会出现故障 新数据已引入 但当我将鼠标悬停在其上时 会显示旧数据 我是 javascript 新手 所以我希望得到一些帮助 看起来我
  • 如何在不将可执行文件重命名为 iexplore.exe 的情况下获得 WebBrowser 控件的最大性能?

    我正在编写一个本机应用程序 它在嵌入式中执行大量 CSS3 动画网页浏览器控件 http msdn microsoft com en us library aa752040 28v vs 85 29 aspx 但动画在独立版 IE10 中更
  • 如何在使用变量之前测试变量是否已经初始化?

    因此 假设您有一个带有变量的应用程序 当您独立加载它时 即当您使用if name main 此外 当客户端导入应用程序以在另一个应用程序中使用时 将调用一个方法 该方法还将实例化该变量 我想做的是在定义变量之前测试变量是否已经被实例化 这样
  • Git 因致命错误而失败,拒绝使用 Git 推送合并不相关的历史记录

    我在本地做了一些更改 我正在尝试将其推送到 GitHub 我读过我可以使用 allow unrelated histories 但我只看到了演示如何执行此操作的示例pull 这不是我需要的 我需要使我的本地目录成为master 我尝试了以下
  • Android 上的 HttpURLConnection 失败

    已解决 请参阅下面的评论 我有一个实现分段文件上传的类 该代码适用于我尝试过的每个 Java 客户端 Android 除外 并且它是我的 Android 应用程序中唯一不能与我的后端服务很好地配合的 HTTP 请求代码 连接响应代码是 1
  • 调试无法与 Android Studio 一起使用的 C++/本机库模块(使用 Cmake)

    我在调试库模块的 C 文件时遇到问题 这在一般情况下可能吗 如果应用程序项目包含 C 代码 则调试工作正常 但我想将 C 代码移至库模块 启动会话时出现错误消息 现在启动本机调试会话 注意力 未找到符号目录 请检查您的本机调试配置 我的 l
  • 不同功能的样本数量不同

    plot x 3 x 2 5 x 12 是否可以设置x 3只有 2 个样本并且x 2 5 x 12比如说同一个图中有 1000 个样本 这是可以做到的 但不是开箱即用的 第一个变体使用临时文件来保存一个低采样率的函数 并稍后将其与高分辨率函
  • Android Studio - 未找到 SDK - 设置向导失败 - 防火墙代理

    言归正传 我处于公司防火墙后面 我必须手动下载 Android Studio 的 zip 文件 并将其提取到我的计算机上的程序文件 Windows 10 中 当我启动工作室时 我的对话工作室需要检索 SDK 我尝试这样做 但在这 3 个 z
  • 如何在 iOS 上制作爆炸动画?

    我有一款 iOS 游戏 当球击中目标时就会爆炸 动画爆炸的最佳方式是什么 如果您正在寻找简单的东西 制作一系列动画爆炸的图像 将它们添加到 UIImageView 并启动动画 像这样的事情 UIImage image0 UIImage im
  • SoapUI:如何将指纹作为 SecurityTokenReference 添加到 wss SIGNATURE 条目

    我有一个关于soapUI的问题 我正在尝试将 ws security 标头添加到包含签名的肥皂请求中 为此 我在项目首选项中使用了soapUI 对话框 WS Security Configurations 它按预期工作 但我的服务器应用程序
  • 如何验证 AWS SigV4 签名

    我有一个服务器将接收带有 SigV4 授权标头的请求 并且基于 SigV4 的验证 我将授予数据访问权限 我们如何验证SigV4 我一直在尝试获取用于验证 SigV4 的文档 但无法获取它 有什么办法可以反编译签名并检查身份验证然后授权吗
  • 使用 PHP 正则表达式从字符串中删除换行符

    如何使用 PHP 从字符串中删除换行符 string str replace PHP EOL string or string str replace array n r string
  • 通过 PostMessage 发送/接收字符串

    尽管网上已经有一些资源可以解决这个粗略的主题 但我仍然没有找到适合我的答案 我希望我的同事之间能有充分的沟通VB net过程和我的C 过程 我希望能够发送一个字符串到and来自C 过程 但目前我需要实现 Sending一个字符串到C 处理并
  • MongoDB 交易

    我在 C 中有如下方法 private void Save object mongoCollection Save object someotherRelationaldb Save object 我有两个数据库 我必须在其中保存一个对象
  • 使用 VBA 访问 iframe 内的元素

    我正在尝试使用 PowerPoint VBA 访问使用 Wix Site Builder 制作的网页上的 iframe 元素 我尝试了在谷歌和其他网页上找到的所有内容 但我无法弄清楚 当我尝试使用时 最常见的错误是 自动化错误 conten
  • 如何使用TextureView代替SurfaceView与ExoPlayer的PlayerView一起使用?

    我知道可以在 ExoPlayer 中使用TextureView 但我找不到任何有关如何以正确的方式实现此功能的示例 你能帮我解决这个问题吗 The PlayerView有一个 xml 属性surface type让您选择是否要使用Surfa
  • 在 XML 中意味着什么?

    什么是
  • 如何在 Eclipse 模拟器中创建代表 Samsung Galaxy S 的 AVD?

    我正在开发一款专门针对三星 Galaxy S 的应用程序 我不是在这里做出决定的人 他们希望其布局达到像素精度 我可以只使用普通的 2 1 AVD 吗 所以我尝试创建 WQVGA432 但它看起来像这样 我不知道为什么 LinearLayo
  • 构建参数未解决

    我有 docker compose 和以下代码 version 3 8 services php container name php build context php args PHPVERSION 7 4 XDEBUGVERSION
  • 如何触发/强制更新 Svelte 组件

    我正在尝试了解 svelte 3 反应性的事情 我想在单击按钮时强制刷新用户界面 我正在使用自定义组件AsyncFetcher接受 HTTP post 数据并返回data其插槽的对象 http post 结果 我想要一个禁用功能 因此 当单