svelte - 避免我的 fetch Svelte 组件中的 if 阻塞
问题描述
我JSON
在我的 Svelte 项目中从外部来源获取。
当我if
在块周围使用块时,await
它可以工作。但是当我删除if
块时,它给出了一个错误object is undefined
。
如何避免使用if
块并使其工作?我不明白为什么if
block 会使错误消失。
这是一个非常简单的脚本。您可以通过单击此处查看 REPL 。
解决方案
您没有初始化program
任何东西,因此等待它会引发错误。将其设置为的初始结果fetchPrograms
将允许您删除 if 块。本{#await}
教程就是这样做的。
<!-- Fetch.svelte -->
<script>
export let url;
let program = fetchPrograms();
async function fetchPrograms(url) {
const response = await fetch(url)
program = await response.json()
}
$: fetchPrograms(url)
</script>
<button on:click={() => url='https://reqres.in/api/users?page=4'} style="color:red">
Fetch
</button>
{#await program}
xx
{:then item}
<p style="color:red">
{item.page}
</p>
{:catch error}
omg
{/await}
推荐阅读
- html - 如何使边框居中
- python - 拼音的所有 Python 排列组合(普通话罗马化)
- php - Laravel 8 - 可信代理。在“fideloper/TrustedProxy”和“TrustProxies 中间件”之间感到困惑
- cordova - 获取 android 的本机目标时出错:未找到有效的 Android SDK 根目录
- pyspark - 使用点或括号表示法选择时列的空值,但在使用 UDF 时不
- javascript - 使用 axios 通过 promise .then 表示法传递数据
- android - 如何在android的BottomAppBar中添加文本
- c# - 使用 jquery 对话框删除 gridview 行
- google-play-console - 尝试在新的 Google Play 控制台上将分阶段部署更新到 100.0 时出现错误代码 7B73D32B
- java - 尝试在 Java 中生成非常大的 PDF 文件时出现 stackOverflowError