Este documento explica la estrategia de gestión de estado utilizada en AdSpaces, combinando React Query para el estado del servidor y Context API para el estado local.
Estado de servidor y caché
Utilizamos React Query (@tanstack/react-query) para manejar el estado que proviene del servidor, incluyendo:
// Ejemplo de uso de React Query
const { data, isLoading, error } = useQuery({
queryKey: ['spaces'],
queryFn: fetchSpaces
});
// Mutación para actualizar datos
const mutation = useMutation({
mutationFn: updateSpace,
onSuccess: () => {
queryClient.invalidateQueries(['spaces'])
}
});
Estado local y de UI
Usamos Context API de React para manejar:
// Ejemplo de Context
export const AuthContext = React.createContext();
export const AuthProvider = ({ children }) => {
const [user, setUser] = useState(null);
// Lógica de autenticación...
return (
<AuthContext.Provider value={{ user, login, logout }}>
{children}
</AuthContext.Provider>
);
};
Nuestra estrategia sigue estos principios:
1. El usuario interactúa con la UI → 2. Se dispara una mutación de React Query → 3. Los datos se actualizan en el servidor → 4. React Query invalida la caché → 5. Se vuelven a obtener los datos actualizados → 6. La UI se actualiza
React.memo para prevenir re-renderizados innecesariosuseMemo y useCallback para datos computados