Почему useEffect on [] вызывается при горячей перезагрузке?Javascript

Форум по Javascript
Ответить
Anonymous
 Почему useEffect on [] вызывается при горячей перезагрузке?

Сообщение Anonymous »

app/page.tsx

Код: Выделить всё

"use client";

import { useEffect, useRef } from "react";
import { foo } from "./OrdersModuleFoo";
import React from "react";
const OrdersModule: React.FC = () => {
const firstRun = useRef();
useEffect(() => {
console.log("Fetching orders in OrdersModule...", firstRun.current);
firstRun.current = true;
}, []);
console.log("Rendering OrdersModule");
console.log("Foo is ", foo);
return OrdersModule Component test;
};
const OrdersModuleMemo = React.memo(OrdersModule);
export default function Home() {
return ;
}
app/OrdersModuleFoo.tsx

Код: Выделить всё

export let foo = {
bar: 123351354,
};
let foz = {
bar: 15253775, // update this
};
Когда я обновляю foz.bar и сохраняю файл, происходит горячая перезагрузка приложения next.JS. К моему удивлению, «Извлечение заказов в OrdersModule... true» всегда печатается при горячей перезагрузке. Для меня это не имеет смысла, поскольку я думал, что useEffect для пустого [] вызывается только один раз при первой сборке компонентов.
Почему он это делает? Я ожидаю, что мой it вообще не будет перерисовываться, поскольку 1) я использую React.memo, 2) без реквизита OrdersModule 3) foz даже не экспортируется.

Подробнее здесь: https://stackoverflow.com/questions/797 ... hot-reload
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»