recoil#AtomFamilyOptions TypeScript Examples
The following examples show how to use
recoil#AtomFamilyOptions.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: api.ts From Chromogen with MIT License | 6 votes |
/* ----- ATOM FAMILY ----- */
export function atomFamily<T, P extends SerializableParam>(
config: AtomFamilyOptions<T, P>,
): (params: P) => RecoilState<T> {
const { atomFamilies } = ledger;
const { key } = config;
// Initialize new family in atomFamilies tracker
atomFamilies[key] = {};
return (params: P): RecoilState<T> => {
const strParams = JSON.stringify(params);
// If the atom has already been created, return from cache, otherwise we'll be creating a new
// instance of an atom every time we invoke this func (which can lead to infinite re-render loop)
const cachedAtom = atomFamilies[key][strParams];
if (cachedAtom !== undefined) return cachedAtom;
const newAtomFamilyMember = recoilAtomFamily(config)(params);
// Storing every atom created except for dummy atom created by ChromogenObserver's onload useEffect hook
if (strParams !== dummyParam) atomFamilies[key][strParams] = newAtomFamilyMember;
return newAtomFamilyMember;
};
}