首页 > 其他分享 >react设置滚轮横向滚动

react设置滚轮横向滚动

时间:2023-03-31 17:34:17浏览次数:43  
标签:el 滚轮 const return react 滚动 children elRef

1.准备

import React, { useRef, useEffect } from 'react';

const useHorizontalScroll = ({ children, ...layoutProps }) => {
  const elRef = useRef(); 
  useEffect(() => {
    const el = elRef.current.children[0]; // 这个是通过ref获取被包住的需要滚动的元素
    if (el) { // 判断是否有这个元素
      const onWheel = e => { 
        if (el?.scrollWidth > elRef?.current?.scrollWidth) { // 判断是否需要横向滚动
          e.preventDefault();
          el.scrollTo({ // 滑动的动画
            left: el.scrollLeft + (e.deltaY * 5),
            behavior: 'smooth',
          });
        }
      };
      el.addEventListener('wheel', onWheel, true); // 需要监听的
      return () => {
        el.removeEventListener('wheel', onWheel, true);
      };
    }
    return elRef;
  }, []);
  return ( 
    <div
      {...layoutProps}
      ref={elRef} // ref
    >
      {children}
    <div>
  );
};

export default useHorizontalScroll;

2.使用

  import HorizontalScroll from '../useHorizontalScroll';
<HorizontalScroll>
  // 放入需要滚动的元素即可
</HorizontalScroll>

 

标签:el,滚轮,const,return,react,滚动,children,elRef
From: https://www.cnblogs.com/Dluea/p/17276966.html

相关文章

  • React 编程思想 #2
    React编程思想#2接上文,已经实现了一个静态的页面,现在就要给页面加上交互了。寻找State状态是应用需要记录的最小变化,构建状态的最重要的原则是DRY(Don’tRepeatYourself,不要重复自己)。对于一个应用,构建出它的状态的绝对最小表示,并通过这些状态计算其他需要的内容。例如,如......
  • Div滚动到头以后置顶
    1<!DOCTYPEHTML>2<html>3<head>4<metacharset="utf-8"/>5<title>Div滚动到头以后置顶</title>6</head>7<bodystyle="height:2000px;">8<divstyle="height:200px&q......
  • 前端React框架和jsx语法的编码规范
    基本规则(BasicRules)每个文件只包含一个React组件然而,在一个文件里包含多个没有state或纯组件是允许的。eslint:react/no-multi-comp.经常用JSX语法。不要用React.createElement,除非你从一个非JSX文件中初始化app。ClassvsReact.createClassvsstateless......
  • vue或者react中的hooks的理解
    我们听过react里面有hooks的概念,那么怎么理解hooks呢? 其实vue2中,我们没有hooks的概念,vue3中我们引入了组合式函数(也就是用组合式api写的),它其实就是vue的hooks。 总结下来,hooks有以下特点:1、hooks其实就是个函数,只是实现它的方法比较特殊,利用组合式api实现的。2、组合式函......
  • css实现横向滚动文字
    css如何做横向滚动文字在css中,想要实现横向滚动的文字,需要利用animation属性和@keyframes规则来实现元素缩放的动画效果,通过@keyframes规则,能够创建动画。创建动画的原理是,将一套CSS样式逐渐变化为另一套样式。在动画过程中,您能够多次改变这套CSS样式。以百分比来规定改......
  • vue elementui中使表的滚动条 滚到顶部或底部
    1.设置table的ref为tableList2.设置滚动至顶部this.$refs.tableList.bodyWrapper.scrollTop=0;3.设置滚动至底部this.$refs.tableList.bodyWrapper.scrollTop=this.$refs.tableList.bodyWrapper.scrollHeight;//如果请求完更新数据,需要使用$nextTickthis.$next......
  • React 笔记
    Date:2023-03-3020:36:05视频链接:尚硅谷React教程开始学react了,......
  • react useComparedState
    import{useCallback,useRef,useState}from'react';import{shallowEqual}from"../utils/shallowEqual";functionuseComparedState(initialState:any){const[state,setState]=useState(initialState);conststateRef=useRef......
  • React Router 备忘清单_开发速查表分享
    ReactRouter备忘清单IT宝库整理的ReactRouter开发速查清单适合初学者的综合ReactRouter6.x备忘清单入门,为开发人员分享快速参考备忘单。开发速查表大纲入门安装使用添加路由器根路由处理未找到错误contacts用户界面嵌套路由客户端路由创建联......
  • React 编程思想 #1
    React编程思想#1看太多语法,都不如简单尝试一下,跟着官方文档做了一下DEMO,文档写的真不错,就是没翻译完,一大半都还是英文(×_×),本篇其实大部分也是在重复文档内容,不过加上了自己的尝试。从原型开始React可以改变你对所看到的设计以及所构建的应用程序的看法。以前你看到的是......