Как я уже упоминал в комментарии, вам нужно сохранять состояние вашего первого состояния и проверять его при наступлении второго события.
В следующем базовом примере Vanilla JS я разрешил перемещениеfoo
элемент только после того, как нажал (и только когда мышь еще не нажата). Для этой проверки состояния я использовал переменную isClicked
.
const element = document.getElementById('foo');
var isClicked = false;
element.addEventListener('mousedown', function() {
isClicked = true;
});
element.addEventListener('mouseup', function() {
isClicked = false;
});
document.addEventListener("mousemove", function(event) {
if (isClicked) {
element.style.left = (event.clientX - 25) + 'px';
element.style.top = (event.clientY - 25) + 'px';
// Please note that I arbitrarily chosen foo's
// width and height to be 50px, hence the 25px offset
}
});
#foo {
width: 50px;
height: 50px;
background-color: tomato;
position: absolute;
}
<div id="foo"></div>
Если вы используете React, вы всегда можете (и предпочтительно) использовать свой state
для хранения этих ... состояний;)