import { withPointer, handleChange } from './hook-engine.mjs'; | |
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]; | |
}); | |
} | |