jotai
Version:
👻 Primitive and flexible state management for React
22 lines (21 loc) • 665 B
JavaScript
import { atom } from '../../vanilla.js';
export function atomWithRefresh(read, write) {
const refreshAtom = atom(0);
if (process.env.NODE_ENV !== 'production') {
refreshAtom.debugPrivate = true;
}
return atom((get, options) => {
get(refreshAtom);
return read(get, options);
}, (get, set, ...args) => {
if (args.length === 0) {
set(refreshAtom, (c) => c + 1);
}
else if (write) {
return write(get, set, ...args);
}
else if (process.env.NODE_ENV !== 'production') {
throw new Error('refresh must be called without arguments');
}
});
}