cli-legend
Version:
"A fun command-line rogurelike dungeon game"
20 lines (19 loc) • 676 B
JavaScript
import { withPointer, handleChange } from './hook-engine.js';
export function useState(defaultValue) {
return withPointer((pointer) => {
const setFn = (newValue) => {
// Noop if the value is still the same.
if (pointer.get() !== newValue) {
pointer.set(newValue);
// Trigger re-render
handleChange();
}
};
if (pointer.initialized) {
return [pointer.get(), setFn];
}
const value = typeof defaultValue === 'function' ? defaultValue() : defaultValue;
pointer.set(value);
return [value, setFn];
});
}