Мобильная сеть: просмотр текущей позиции касания пальца пользователя

Я создаю веб-приложение React, и мне любопытно, как получить текущую позицию касания, когда пользователь держит палец в мобильном Интернете.

В идеале я хотел бы выполнить то же поведение, что и на рисунке ниже, но в мобильной сети, где пользователь может коснуться поля (div) и, удерживая палец на экране, переместить его в другое поле, чтобы выделить все из них. GIF ниже является версией для рабочего стола и работает с событиями мыши, onMouseDown, onMouseUp, onMouseEnter.

Должен ли я использовать событие перетаскивания для достижения этой цели?

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

Код работает на рабочем столе:

class Block extends PureComponent {
    render() {
        const {
            index,
            isSelectingBlocks, setIsSelectingBlocks,
            firstBlock, setFirstBlock,
            lastBlock, setLastBlock,
        } = this.props;

        return (
            <StyledTimeBlock
                className={`block ${this.props.className}`}
                onFocus={() => console.log('focusing', index)}
                onMouseDown={() => {
                    console.log('mouse down');
                    if (isBetweenTimes(index, firstBlock, lastBlock)) {
                        return;
                    }

                    setIsSelectingBlocks(true);
                    setFirstBlock(index);
                    if (firstBlock) {
                        setLastBlock(null);
                    }
                }}
                onMouseEnter={() => {
                    if (isSelectingBlocks) {
                        if (typeof firstBlock === 'number') {
                            setLastBlock(index);
                        }
                    }
                }}
                onMouseUp={() => {
                    console.log('mouse up');
                    // if user was moving backwards on the grid
                    if (!isSelectingBlocks) {
                        return;
                    }

                    if (typeof lastBlock === 'number' && lastBlock < firstBlock) {
                        setFirstBlock(lastBlock);
                        setLastBlock(firstBlock);
                        setIsSelectingBlocks(false);
                        return;
                    }

                    setLastBlock(index);
                    setIsSelectingBlocks(false);
                }}
            >
                <InnerBorder
                    betweenNewStartEndTime={isBetweenTimes(index, firstBlock, lastBlock)}
                >
                </InnerBorder>
            </StyledTimeBlock>
        )
    }
}

Спасибо!

0 ответов

Другие вопросы по тегам