Вопрос проверяет понимание различий между библиотеками для управления серверным и клиентским состоянием в React-приложениях.
TanStack Query (ранее React Query) и Redux решают разные задачи, хотя оба управляют состоянием. TanStack Query создан специально для работы с серверным состоянием — данными, которые приходят с API и могут устаревать. Он предоставляет встроенные механизмы кэширования, фоновой перезагрузки, пагинации и инвалидации. Redux — это универсальный контейнер для состояния, который не делает различий между серверными и клиентскими данными. Для работы с API в Redux приходится вручную настраивать middleware (например, Redux Thunk или Redux Saga) и писать редьюсеры для каждого запроса.
TanStack Query:
import { useQuery } from '@tanstack/react-query';
function Posts() {
const { data, isLoading, error } = useQuery({
queryKey: ['posts'],
queryFn: () => fetch('/api/posts').then(res => res.json()),
});
if (isLoading) return 'Loading...';
if (error) return 'Error!';
return data.map(post => {post.title});
}Redux с Thunk:
// actions.js
export const fetchPosts = () => async (dispatch) => {
dispatch({ type: 'posts/fetchStart' });
try {
const res = await fetch('/api/posts');
const data = await res.json();
dispatch({ type: 'posts/fetchSuccess', payload: data });
} catch (err) {
dispatch({ type: 'posts/fetchError', payload: err });
}
};
// reducer.js
const initialState = { data: [], isLoading: false, error: null };
export default function postsReducer(state = initialState, action) {
switch (action.type) {
case 'posts/fetchStart': return { ...state, isLoading: true };
case 'posts/fetchSuccess': return { ...state, isLoading: false, data: action.payload };
case 'posts/fetchError': return { ...state, isLoading: false, error: action.payload };
default: return state;
}
}Вывод: TanStack Query — лучший выбор для серверного состояния, Redux — для клиентского. Их можно комбинировать в одном проекте.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию