我可以在 svelte 中使用 $lib 文件中的商店吗?

can I use a store from a $lib file in svelte?

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

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

在我的 dates.ts 中,我想访问 $userLocale 属性,但我收到一个错误,指出 $userLocale 未定义。

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

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

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

从我的组件我会做:

import { week } from '$lib/dates.ts' 并调用 week(new Date())

我真的希望我不必将区域设置传递给每个方法调用...如果我不能在 $lib

中使用商店

我找到了一种在 $lib/dates.ts 模块中使用存储值的方法:

import { get_store_value } from 'svelte/internal';

const $userLocale = get_store_value(userLocale);

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

import { get } from 'svelte/store';

const $userLocale = get(userLocale);

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

不要不要使用'svelte/internal'中的东西,因为它们没有记录在案并且可以随时更改(虽然不太可能)而不被视为重大更改。