This commit is contained in:
Schluffe
2026-04-01 10:48:11 +02:00
parent 512072688a
commit ea0acab180
4 changed files with 48 additions and 6 deletions
+28
View File
@@ -0,0 +1,28 @@
type Current = null | (() => void);
let current: Current = null;
export function createSignal<T>(value: T): [() => T, (value: T) => void] {
let innerValue = value;
const observers = new Set<() => void>();
const getter = () => {
current !== null && observers.add(current);
return innerValue;
};
const setter = (value: T) => {
innerValue = value;
for (const observer of observers) {
observer();
}
};
return [getter, setter];
}
export function createEffect(callback: () => void) {
current = callback;
callback();
current = null;
}