Svelte 中的 {{#await}} 块在这一点上是相当新的,所以这个用例可能还不是可以使用这种方法实现的。
我尝试将 url(JSON 文件的位置)作为属性传递给组件,并在组件本身的 promise 中获取它,好处是我可以使用 {{#await}} 块来处理组件内的状态。
该组件正在一个更大的组件中使用,如下所示:
<Showcase dataUrl="/js/showcase.json" />
在 Showcase 组件中,我使用 Promise 作为属性(请参阅此处的 Svelte 文档)使用 {{#await}} 块为组件提供状态。
export default {
data() {
return {
showcaseData: new Promise(fulfil => fetch(dataUrl)
.then(res => res.json())
.then(data => ({
data: data.assets
}))
.then(res => {
fulfil(res.data)
})
)
}
}
}
问题是我无法dataUrl
在 Promise 中领取财产。(我可以吗?)
我认为实现此行为的另一种方法是在观察者中包装一个承诺(Rich Harris在此处提出了这一建议)。但是,如果确实有一种访问方式,那么不使用 {{#await}} 似乎很可惜,dataUrl
因为这(理论上)是处理showcaseData
组件加载时间设置的最简洁的方式。
谁能看到这可能的方法?