我可以在 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'中的东西,因为它们没有记录在案并且可以随时更改(虽然不太可能)而不被视为重大更改。
我有一个 $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'中的东西,因为它们没有记录在案并且可以随时更改(虽然不太可能)而不被视为重大更改。