Реакция useEffect с зависимостью ссылки на div, обновленной при первом setState в компонентеJavascript

Форум по Javascript
Ответить
Anonymous
 Реакция useEffect с зависимостью ссылки на div, обновленной при первом setState в компоненте

Сообщение Anonymous »

Вот минимальный код компонента. Я не могу понять, почему эффект ссылки на контейнер вызывается дважды. Первый раз, когда div фактически создан, второй раз, когда кнопка увеличения нажата в первый раз. Последующие приращения не обновляют div.
Кроме того, вызывается второй эффект, div тот же.
React: 19.2.0

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

let stored: HTMLDivElement | null = null;

function RefUpdated() {
const containerRef = useRef(null);
const [counter, setCounter] = useState(0);

useEffect(() => {
console.log("App mounted");
return () => {
console.log("App unmounted");
}
}, []);

useEffect(() => {
console.log("Container ref", stored ===  containerRef.current, containerRef.current);

stored = containerRef.current;
}, [containerRef.current]);

return (

Counter: {counter}

 setCounter(c => c + 1)}>inc

)
}

const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
root.render(

);
Вывод в консоль
Изображение

Спасибо

Подробнее здесь: https://stackoverflow.com/questions/798 ... e-in-compo
Ответить

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

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

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

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

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