我可以在 svelte 中使用 $lib 文件中的存储吗?

cho*_*ovy 0 svelte sveltekit

我有一个$lib/dates.ts导出一些日期格式化函数的文件。

从文件中设置__layout.svelte用户区域设置。userLocale$store/auth.ts

在我的内部,dates.ts我想访问该属性,但收到未定义的$userLocale错误。$userLocale

有没有办法在 $lib 文件中使用存储,而不必将其传递给函数调用?

import { userLocale } from '$stores/auth';

export const week = d => new Intl.DateTimeFormat($userLocale, { weekday: 'short' }).format(d);
Run Code Online (Sandbox Code Playgroud)

从我的组件中我会这样做:

import { week } from '$lib/dates.ts'并打电话week(new Date())

我真的希望我不必将语言环境传递给每个方法调用...如果我不能使用 $lib 内的存储

Ste*_*aes 7

get如果您不需要订阅,您应该使用该函数来读取存储值

import { get } from 'svelte/store';

const $userLocale = get(userLocale);
Run Code Online (Sandbox Code Playgroud)

请注意,您应该在函数中读取此值,否则它将始终具有初始值,并且当用户更改它时不会更新。

不要使用“svelte/internal”中的内容,因为这些内容没有文档记录,并且可以随时更改(尽管不太可能),而不被视为重大更改