Im new to react, how did you handle async state management before React Query?

Also how did you handle complex cache mutations?