import { Context, useContext } from 'react'; import { RecoilState, useRecoilState } from 'recoil'; import { RecoilScopeContext } from '../states/RecoilScopeContext'; export const useRecoilScopedState = ( recoilState: (param: string) => RecoilState, CustomRecoilScopeContext?: Context, ) => { const recoilScopeId = useContext( CustomRecoilScopeContext ?? 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 useRecoilState(recoilState(recoilScopeId)); };