Задать вопрос
VladOsadchyi
@VladOsadchyi
Студент

Почему компонент рендерится 4 раза?

Есть такой hoc компонент:
import React, {useEffect, useState} from "react";

const withData = (WrappedComponent) => {
    console.log('withData')
    return (props) => {
        const [state, setState] = useState({
            data: [],
            loading: true,
            error: null,
        });

        useEffect(() => {
            props.getData()
                .then(data => {
                    setState({
                        data: data,
                        loading: false,
                        error: null,
                    })
                })
                .catch(error => {
                    setState({
                        data: [],
                        loading: false,
                        error: error,
                    })
                })
        }, []);

        console.log(props, state);

        return state.loading
            ? <span>Loading</span>
            : state.error
                ? <span>{state.error}</span>
                : <WrappedComponent {...props} data={state.data}/>
    };
};

export default withData;


Консоль:
5e9cbd4b1691c490814899.png

Судя по консоли, компонент рендерится 4 раза... Почему так?
  • Вопрос задан
  • 610 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
VladOsadchyi
@VladOsadchyi Автор вопроса
Студент
Причина в React.StrictMode, если его убрать, то будет 2 рендеринга, как и должно быть.
Подробнее здесь
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽