使用 $ 符号访问 svelte 存储会导致引用错误

2023-12-29

我有一个store.js文件内容为:

import { writable } from 'svelte/store';
export  const generateds = writable(0);

console.log("generateds", $generateds)

每次我尝试访问 $ generateds (在此文件内部或外部)时,我都会收到此错误:

Uncaught ReferenceError: $generateds is not defined
    at stores.js:4
    at main.js:6

当我在新项目中使用store时,没有问题。我找不到我当前项目的问题所在。

这是我正在使用的 npm 包的列表:

── @fortawesome/[email protected] /cdn-cgi/l/email-protection
├── @material/[email protected] /cdn-cgi/l/email-protection
├── @mdi/[email protected] /cdn-cgi/l/email-protection
├── @rollup/[email protected] /cdn-cgi/l/email-protection
├── @rollup/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @smui/[email protected] /cdn-cgi/l/email-protection
├── @sveltejs/[email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── rollup-plugin-postcs[email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── sve[email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection
├── [email protected] /cdn-cgi/l/email-protection

引用存储值的 $ 语法只能在 Svelte 组件内部使用。从the docs https://svelte.dev/docs#4_Prefix_stores_with_%24_to_access_their_values(强调我的):

每当您引用商店时,您都可以访问它的值组件内部通过在其前面添加 $ 字符来实现。这会导致 Svelte 声明前缀变量,并设置一个商店订阅,该订阅将在适当时取消订阅。

如果你需要获取普通JS文件中的值,你可以订阅它 https://svelte.dev/tutorial/writable-stores或使用 Svelte 的获取函数 https://svelte.dev/docs#get(订阅商店以获取值并立即取消订阅)。

import { generateds }  from './store.js';
import { get } from 'svelte/store';

// method 1
const unsubscribe = generateds.subscribe((val) => { console.log(val); });
unsubscribe();

// method 2
console.log(get(generateds));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 $ 符号访问 svelte 存储会导致引用错误 的相关文章

随机推荐