import { Context, useContext } from 'react'; import { RecoilState, useRecoilState } from 'recoil'; import { RecoilScopeContext } from '../states/RecoilScopeContext'; export function useRecoilScopedFamilyState( recoilState: (familyUniqueId: string) => RecoilState, uniqueIdInRecoilScope: string, SpecificContext?: Context, ) { const recoilScopeId = useContext(SpecificContext ?? RecoilScopeContext); if (!recoilScopeId) throw new Error( `Using a scoped atom without a RecoilScope : ${ recoilState('').key }, verify that you are using a RecoilScope with a specific context if you intended to do so.`, ); const familyUniqueId = recoilScopeId + uniqueIdInRecoilScope; return useRecoilState(recoilState(familyUniqueId)); }