MouseMove не работает в реакции Drag'N'Drop - PullRequest
0 голосов
/ 22 марта 2019

У меня есть 4 блока выше элемента d'n'd. Когда я делаю событие «mousedown» для любого из этих блоков, отключая перетаскивание, я хочу сделать событие «mousemove» для создания соединительной линии из этого элемента и т. Д.

Я уже читал аналогичный выпуск . Но, к сожалению, я не понимаю, как пропустить событие «mousemove» над элементом d'n'd.

Также я знаю, что событие перетаскивания по умолчанию запрещает «движение мыши».

Кто знает, как это работает?

Буду рад любой информации.

constructor(props: ElementProps & DiagramInjectStore) {
    super(props);

    this.handleFlowCursorSnapping = this.handleFlowCursorSnapping.bind(this) as (event: MouseEvent) => void;
    this.handleFlowCursorFinalSnapping = this.handleFlowCursorFinalSnapping.bind(this) as (event: MouseEvent) => void;
}

public render(): JSX.Element {
    const { coord, size } = this.element.properties;
    const { diagramId } = this.props;
    const { connectors } = this.element;

    return (
        <Select
            coord={ coord }
            size={ size }
            stage={ this.selectStage }
            canResizing={ false }

            onDragStart={ () => this.handleDragStart() }
            onDrag={ e => this.handleDrag(e) }
            onDragEnd={ e => this.handleDragEnd(e) }
        >
            <StyledGlyphElement>
                <Connectors
                    diagramId={ diagramId }
                    type={ ConnectorTypeKind.Element }
                    connectors={ connectors }
                    onMouseDown={ event => this.handleCreateFlow(event) }
                    onMouseOver={ event => this.handleBlur(event) }
                />
            </StyledGlyphElement>
        </Select>
    );
}

public componentDidMount(): void {
    document.body.addEventListener('mousemove', this.handleFlowCursorSnapping, false);
    document.body.addEventListener('mouseup', this.handleFlowCursorFinalSnapping, false);
}

public componentWillUnmount(): void {
    document.body.removeEventListener('mousemove', this.handleFlowCursorSnapping, false);
    document.body.removeEventListener('mouseup', this.handleFlowCursorFinalSnapping, false);
}

private handleFlowCursorSnapping(event: MouseEvent): void {
    document.body.addEventListener('mousemove', this.handleFlowCursorFinalSnapping, false);
}

private handleFlowCursorFinalSnapping(event: MouseEvent): void {
    document.body.removeEventListener('mousemove', this.handleFlowCursorSnapping, false);
}

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...