Я все еще ловлю голову на крюках реакции, но изо всех сил пытаюсь понять, что я здесь делаю не так.У меня есть компонент для изменения размеров панелей, при новом изменении края я обновляю значение в состоянии, затем у меня есть обработчик событий для mousemove, который использует это значение, однако он не обновляется после изменения значения.
Вот мой код:
export default memo(() => {
const [activePoint, setActivePoint] = useState(null); // initial is null
const handleResize = () => {
console.log(activePoint); // is null but should be 'top|bottom|left|right'
};
const resizerMouseDown = (e, point) => {
setActivePoint(point); // setting state as 'top|bottom|left|right'
window.addEventListener('mousemove', handleResize);
window.addEventListener('mouseup', cleanup); // removed for clarity
};
return (
<div className="interfaceResizeHandler">
{resizePoints.map(point => (
<div
key={ point }
className={ `interfaceResizeHandler__resizer interfaceResizeHandler__resizer--${ point }` }
onMouseDown={ e => resizerMouseDown(e, point) }
/>
))}
</div>
);
});
Проблема в функции handleResize
, в которой должна использоваться последняя версия activePoint
, которая будет представлять собой строку top|left|bottom|right
, но вместо этого будет null
.