Thi*_*rez 1 typescript svelte sveltekit
我正在将 SvelteKit 与 Typescript 结合使用。在 $lib 文件夹中,我有一个 .ts 文件。
'$app/stores'
我尝试从.ts 文件中访问用户/会话。
import { get } from 'svelte/store';
import { session } from "$app/stores";
function getUser(){
const {user} = get(session);
console.log(user);
}
Run Code Online (Sandbox Code Playgroud)
但是当调用该函数时,我在控制台中收到以下错误消息:
未捕获(承诺中)错误:在组件初始化之外调用函数
我该如何解决这个问题?
非常感谢!
我不知道您在哪一点调用getUser
,但它可能是在组件初始化以外的其他时间(否则您不会收到此错误),这意味着您需要以稍微不同的方式构建事物。
来自文档:
“...商店不是自由浮动的对象:它们必须在组件初始化期间访问,就像使用 访问的其他任何东西一样getContext
。...商店本身(...)需要在组件或页面上同步调用未使用 $-前缀时初始化。改为getStores
安全.subscribe
地异步使用。”
这意味着:
session
在这种情况下使用,请自行使用getStores
并分配给会话:const { session } = getStores()
const { session } = getStores()
在组件初始化期间调用。例子:
import { get } from 'svelte/store';
import { getStores} from "$app/stores";
function getUser() { // <- call this at component initialization
const { session } = getStores();
return {
current: () => get(session).user
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3327 次 |
最近记录: |