Ваш прослушиватель событий регистрирует функцию (ссылку), которая имеет count
в качестве 0 в среде, в которой он определен, и когда происходит новый рендеринг, ваша ссылка не обновляется, которая зарегистрирована с этим элементом, и эта зарегистрированная ссылка на функцию по-прежнемузнает, что счетчик равен 0, хотя счетчик был изменен, но обновленная функция не была зарегистрирована, которая знает обновленное значение в своем контексте.Поэтому вам необходимо обновить прослушиватель событий новой ссылкой на функцию.
useEffect(() => {
const target = subtitleEl.current;
target.addEventListener("click", onSubtitleClick);
return () => {
console.log("removeEventListener");
target.removeEventListener("click", onSubtitleClick);
};
}, [onSubtitleClick]);
Однако вам не нужен этот грязный код для достижения того, что вы делаете сейчас, или тому подобное.Вы можете просто вызвать эту переданную функцию по клику и не присоединяться к элементу через ref, а напрямую в jsx.
<div
className="panelText"
style={{ fontSize: "13px" }}
onClick={onSubtitleClick}
ref={subtitleEl}
>
Button2
</div>