У меня есть React Functional Component, который получает реквизит с переменной из useState ().Это работает нормально, но если я использую его в EventListener, он не обновляется.Я попробовал следующее, но все равно это не работает.
Может быть, кто-то может объяснить, почему.
Спасибо
Я ожидал бы, что x будет обновленным числом, но оно всегда имеетзначение начальной настройки EventHandler.
import React, { useState, useEffect } from "react";
import ReactDom from "react-dom";
const App = () => {
const [num, setNum] = useState(50);
return (
<div>
<button onClick={() => setNum(prev => prev + 1)}>Test</button>
<div>{num}</div>
<Child num={num} />
</div>
);
};
const Child = ({ num }) => {
let x = 0;
const md = () => {
console.log(num, x);
};
useEffect(() => {
x = num;
}, [num]);
useEffect(() => {
document.getElementById("box").addEventListener("mousedown", md);
return () => {
document.removeEventListener("mousedown", md);
};
}, []);
return <div id="box">click {num}</div>;
};
ReactDom.render(<App />, document.getElementById("app"));