我有一个使用Svelte(使用Astro的SSR)的应用程序,我正在尝试将我的数据保存到localStorage
中。
在我看来,关于这个问题的文档并不足够,因为我似乎经常遇到困难。
到目前为止,我定义了以下存储:
import { writable } from 'svelte/store'
function createCart() {
const { subscribe, set, update } = writable([]);
return {
subscribe,
update: (item) => update(value => [...value, item]),
remove: (item) => update(n => {
if(n.length > 0) n.pop() // only remove last item
return n // update the store value
}),
empty: () => set([])
};
}
export const cart = createCart()
为了保存到
localStorage
(而不破坏我的SSR),我已经实现了以下内容:import { writable } from 'svelte/store'
function createCart() {
const defaultCartValue = []
const isClient = typeof window !== 'undefined'
const initialValue = isClient ? window.localStorage.getItem('cart') : defaultCartValue;
const { subscribe, set, update } = writable(
isClient
? window.localStorage.setItem('cart', initialValue)
: defaultCartValue
);
return {
subscribe: subscribe(value => localStorage.setItem('cart', ([
value,
...initialValue
]))),
update: (value) => isClient
? window.localStorage.setItem(
'cart',
JSON.stringify([...value, item])
)
: update(value => [...value, item]),
// TODO: fix remove items from localStorage
remove: (item => update(n => {
if(n.length > 0) n.pop()
return n
})
),
empty: () => isClient
? window.localStorage.setItem('cart', defaultCartValue)
: set(defaultCartValue)
};
}
export const cart = createCart()
我一直在遇到 Cannot read property 'unsubscribe' of undefined
错误,其后跟着 stop is not a function
错误。
有没有人能帮我理解为什么会出现这2个错误?