CatlikeC
tRPC2y ago
3 replies
Catlike

useUtils changes at every render and causes useEffect to be called continuously

I have a context provider where I need to invalidate a query on unmount. So I wrote this piece of code:
const utils = trpc.useUtils();
useEffect(() => (
    () => utils.user.example.invalidate()
), [utils.user.example.invalidate]);

Howerver, the cleanup function is called continuously when other fields of the context provider changes even without involving trpc. I also tried to use as dependency utils, utils.user and utils.user.example.
A workaround coul be to pass [] as dependencies and then make an exception on eslint, but it would be nice if useUtils would return the same instance instead of changing at every render.
Was this page helpful?