P粉1741519132023-08-16 18:17:53
在标记中,有原生语法(有很多变体)可以用于等待承诺:
{#await loadLang() then lang} <span>{lang.someValue}</span> {/await}
另一种选择是在顶层范围声明一个变量,并在数据加载后设置它。当然,它首先会是未定义的,或者是您初始化的其他任何值。然后通常会与{#if}
结合使用:
let lang; loadLang().then(l => lang = l);
{#if lang} <span>{lang.someValue}</span> {/if}
在browser
上有一个守卫并不好。您可能希望将数据加载移到+layout
加载函数中,以便将其作为data
属性传递,并且可以在SSR和CSR期间使用,并且对使用布局的每个页面都可用。
不要使用document.documentElement.lang
,而是在服务器上使用请求的Accept-Language
头。
在页面提供/渲染之前加载数据还可以防止潜在的布局变化或加载指示器。