Задать вопрос
drunkseal
@drunkseal

Запрос на бэк перед загрузкой сайта?

Нужно сделать запрос на бэк.
Когда использую useEffect происходит моргание на сайте, как мне этого избежать?
Пример из моего кода:
const Container = (...) => {
const dispatch = useDispatch()

useEffect(() => {
dispatch(fetchVacations())
}, [])

return (...)}
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Devilz_1
@Devilz_1
Frontend-Developer
1) useLayoutEffect - можно пробнуть его, но архитекторы реакта настоятельно рекомендуют использовать useEffect

2) если же мы слушаем архитекторов реакта, значит мы создаём переменную в стейте компонента:

const [isLoading, setLoading] = useState(false);

Перед возвратом jsx разметки, ставим условие, если isLoading === false, то return. А в useEffect, после диспатча сэтим в isLoading значение true.

useEffect(() => {
dispatch(fetchVacations());
if (!isLoading) setLoading(true);   // Сэтим истину только в случае если isLoading === false 
}, [])                              // во избежании мультирендеринга

if (!isLoading) return;

return (...)}


таким образом, компонент не рендерится, пока мы не задиспатчим данные в стор
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽