Я хочу создать перетаскиваемый div, поэтому я создал ссылку для доступа к div, чтобы я мог использовать его в Rx js из оператора fromEvent
Проблема в том, что объект ref будет установлен после использования в fromEvent ( первый раз ref еще не установлен), поэтому я поместил его в оператор if, поэтому он использует ref только тогда, когда он установлен.
Теперь dragRef.current установлен, но компонент никогда не будет выполняться снова
здесь это код, который я использую:
import React, { useRef, useEffect, useState } from "react";
import "./App.css";
import { fromEvent } from "rxjs";
import { map } from "rxjs/operators";
const App: React.FC = () => {
const dragRef = useRef<HTMLDivElement>(null);
const mouseMove = fromEvent(document, "mousedown");
if (dragRef.current != undefined) {
debugger;
const mouseDown = fromEvent(dragRef.current, "mousedown");
const mouseUp = fromEvent(dragRef.current, "mouseup");
const mouseDrag = mouseDown.pipe(
map((evt: MouseEvent | Event) => {
// let offsetX = evt.clientX - dragRef.current.offsetLeft;
// let offsetY = evt.clientY - dragRef.current.offsetTop;
console.log(evt);
return evt;
})
);
mouseDrag.subscribe(v => console.log(v));
}
return (
<div className="App">
<header className="App-header">
<div className="drag" ref={dragRef}></div>
</header>
</div>
);
};
export default App;