import { useEffect , useRef , useMemo } from 'react' ; import type { SerializeQueryArgs } from '@reduxjs/toolkit/dist/query/defaultSerializeQueryArgs' ; import type { EndpointDefinition } from '@reduxjs/toolkit/dist/query/endpointDefinitions' ; export function useStableQueryArgs < T > ( queryArgs , serialize , endpointDefinition , endpointName ) { const incoming = useMemo ( ( ) => ( { queryArgs , serialized : typeof queryArgs == 'object' ? serialize ( { queryArgs , endpointDefinition , endpointName } ) : queryArgs , } ) , [ queryArgs , serialize , endpointDefinition , endpointName ] ) ; const cache = useRef ( incoming ) ; useEffect ( ( ) => { if ( cache . current . serialized !== incoming . serialized ) { cache . current = incoming ; } } , [ incoming ] ) ; return cache . current . serialized === incoming . serialized ? cache . current . queryArgs : queryArgs ; }