import { Context, useContext } from 'react'; import { RecoilState, useRecoilValue } from 'recoil'; import { RecoilScopeContext } from '../states/RecoilScopeContext'; export function useRecoilScopedValue( recoilState: (param: string) => RecoilState, 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.`, ); return useRecoilValue(recoilState(recoilScopeId)); }