solid-use
Version:
A collection of SolidJS utilities
19 lines (16 loc) • 369 B
text/typescript
import { createSignal } from 'solid-js';
export interface Atom<T> {
(): T;
(value: T): T;
}
export default function atom<T>(value: T, equals = Object.is): Atom<T> {
const [state, setState] = createSignal(value, {
equals,
});
return (...args: [] | [T]): T => {
if (args.length === 1) {
setState(() => args[0]);
}
return state();
};
}