16 lines
364 B
TypeScript
Raw Normal View History

2025-02-26 10:53:26 +08:00
import { proxy, snapshot, subscribe } from 'valtio';
export function proxyWithPersistant<V>(
val: V,
opts: {
key: string;
},
) {
const local = localStorage.getItem(opts.key);
const state = proxy(local ? JSON.parse(local) : val);
subscribe(state, () => {
localStorage.setItem(opts.key, JSON.stringify(snapshot(state)));
});
return state;
}