0

написал простой проект на React, главный компонент ничего не делает, отрисовывает пустой блок:

class AppMain extends React.Component {
    render() {
        console.log("MAIN");
        return <></>
    }
}

...

const root = createRoot(document.getElementById("root") as HTMLElement); root.render( <React.StrictMode> <AppMain /> </React.StrictMode> );

вижу, что происходит двойной вызов:

MAIN
VM485:236 MAIN

Тоже самое уже в нормальном проекте - двойной вызов компонент. С чем это связано и как с этим бороться (если конечно это не какое-то стандартное поведение)?

Zhihar
  • 37,513
  • Уберите <React.StrictMode>. И будет вам счастье – Randall Sep 30 '22 at 06:46
  • @Randall, а почему вообще это возникает? Опять же польза в StrictMode есть? У меня то это в коде "из коробки" просто - что конструктор приложения первоначально сделал, то и стоит – Zhihar Sep 30 '22 at 06:51
  • Конечно есть польза. Строгий режим активирует дополнительные проверки и предупреждения для своих потомков. – Randall Sep 30 '22 at 06:53
  • если вещь полезная, то лучше же оставить - но почему двойной вызов? – Zhihar Sep 30 '22 at 06:58
  • Это одна из проверок. По идее компонент не должен зависеть от того сколько раз его рендерили. – Alexey Ten Sep 30 '22 at 07:04
  • Рекомендую читать документацию https://reactjs.org/docs/strict-mode.html – Alexey Ten Sep 30 '22 at 07:05

0 Answers0