У меня есть элемент, который можно растянуть - когда я перетаскиваю .leftMove, он меняет левую позицию и ширину родителя, а когда перетаскиваю .rightMove, он меняет ширину родителя.
Проблема в том, что я не могу удалить прослушиватель событий на mouseUp. Он все еще там, мне удается удалить событие при втором наведении мыши, но все же огромная проблема заключается в том, что элемент случайно меняет размер при первом наведении мыши.
return (
<Fragment>
<div className="leftMove"
onMouseDown={mouseDownLeft}
onMouseUp={MouseUp}
onMouseLeave={MouseUp}></div>
<div className="rightMove"
onMouseDown={mouseDownRight}
onMouseUp={MouseUp}
onMouseLeave={MouseUp}>
</div>
</Fragment>)
const resize = (e) => {
...change width and position left...
let thisone = e.target;
thisone.removeEventListener("mousemove", resize, false);
thisone.onmouseup = function() {
console.log('removed');
thisone.removeEventListener("mousemove", resize, false);
};
thisone.onmouseleave = function() {
console.log('removed by leave');
thisone.removeEventListener("mousemove", resize, false); //working on leave and comeback second time
thisone.removeEventListener("onmousedown", resize, false);
};
};
const MouseUp = (e) => {
e.target.removeEventListener("mousemove", resize, false); //not working at all
//update global state, it's update elements I am changing width, leftpos
setState(prevsetState => ({
...prevsetState,
fromSetting: {
...prevsetState.fromSetting,
mods: filteredDataSource
}
}));
}
const mouseDownLeft = (e) => {
//determining left right move
e.target.addEventListener("mousemove", resize, false);
}