Comments 5
Данную часть можно упростить:
useEffect(() => {
let mounted = true;
async function getData() {
setError(false);
setLoading(true);
try {
const response = await fetch(url + ‘users/${id}’);
let data = await response.json();
if (mounted) {
setUser(data);
setError(false);
}
} catch (e) {
setError(true);
}
setLoading(false);
}
const interval = setInterval(() => getData(), 1000);
return () => {
clearInterval(Interval);
mounted = false;
}
}, [id]);
const interval = setInterval(() => getData(), 1000);
->const interval = setInterval(getData, 1000);
;часть сетов можно убрать в finnaly у try catch;
а если заменить mounted на useEffectLayout?
Если смотреть только на список решаемых проблем и не привязываться к Redux, то для решения данных задач есть ещё как минимум одна библиотека - React Query. Вы пробовали их сравнивать? Ибо, если Redux не нужен, зачем тащить весь тулкит?
Знаком с ней но мне лично больше нравится react-swr, впрочем они почти полный аналог.
Был эксперимент когда пробовал обойтись вообще без стора. У нас же есть все данные с бэка. При этом производные переменные от бэка помещал в кастомные хуки типо такого:
function useCustomData() {
const data1 = useSwr(..)
const data2 = useSwr(..)
return process(data1,data2)
}
Переменные глобального состояния пробовал хранить с помощью контекста.
Контекст вообще не очень люблю многословно и не производительно. На больших проектах такого не встречал.
Но если стор действительно не сильно нужен, то react-swr мой выбор. Впрочем rtk ему не мешает - его как глобальное.
Как на основе данных из этих эндпойнтов создать селекторы?
RTK query: что мы от него хотим и зачем