当前位置:首页 > React

react实现左右滑动

2026-01-27 04:19:25React

实现左右滑动的常见方法

使用第三方库(如 react-swipeable) 安装 react-swipeable 库:

npm install react-swipeable

示例代码:

react实现左右滑动

import { useSwipeable } from 'react-swipeable';

function SwipeComponent() {
  const handlers = useSwipeable({
    onSwipedLeft: () => console.log('左滑'),
    onSwipedRight: () => console.log('右滑'),
    preventDefaultTouchmoveEvent: true,
    trackMouse: true
  });

  return <div {...handlers}>滑动区域</div>;
}

使用原生 touch 事件 通过监听 touchstart、touchmove 和 touchend 事件实现:

react实现左右滑动

function SwipeComponent() {
  let touchStartX = 0;

  const handleTouchStart = (e) => {
    touchStartX = e.touches[0].clientX;
  };

  const handleTouchEnd = (e) => {
    const touchEndX = e.changedTouches[0].clientX;
    if (touchEndX < touchStartX) {
      console.log('左滑');
    } else if (touchEndX > touchStartX) {
      console.log('右滑');
    }
  };

  return (
    <div 
      onTouchStart={handleTouchStart}
      onTouchEnd={handleTouchEnd}
    >
      滑动区域
    </div>
  );
}

使用 CSS Scroll Snap 纯 CSS 实现滑动效果:

function ScrollComponent() {
  return (
    <div style={{
      overflowX: 'auto',
      scrollSnapType: 'x mandatory',
      display: 'flex'
    }}>
      <div style={{ scrollSnapAlign: 'start', flex: '0 0 100%' }}>页面1</div>
      <div style={{ scrollSnapAlign: 'start', flex: '0 0 100%' }}>页面2</div>
    </div>
  );
}

使用 transform 动画 结合 useState 和 transform 实现平滑滑动:

import { useState } from 'react';

function TransformComponent() {
  const [position, setPosition] = useState(0);

  const handleSwipe = (direction) => {
    const newPosition = direction === 'left' ? position - 100 : position + 100;
    setPosition(newPosition);
  };

  return (
    <div style={{ overflow: 'hidden' }}>
      <div 
        style={{ 
          display: 'flex',
          transform: `translateX(${position}px)`,
          transition: 'transform 0.3s ease'
        }}
      >
        <div style={{ width: '100px' }}>内容1</div>
        <div style={{ width: '100px' }}>内容2</div>
      </div>
      <button onClick={() => handleSwipe('left')}>左滑</button>
      <button onClick={() => handleSwipe('right')}>右滑</button>
    </div>
  );
}

选择建议

  • 需要简单手势检测时,推荐使用 react-swipeable
  • 需要高性能原生实现时,使用 touch 事件方案
  • 需要简单内容滑动时,CSS Scroll Snap 最轻量
  • 需要自定义动画效果时,transform 方案最灵活

每种方案都可以根据具体需求进行扩展,例如添加滑动阈值判断、动画回调等。

标签: react
分享给朋友:

相关文章

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…