说说react-custom-scrollbars插件在react hooks版本中的使用

article/2025/11/11 13:12:06

react-custom-scrollbars插件

      • 读前说明
      • 基本使用
      • 属性介绍
        • onScroll
        • renderView
        • renderThumbVertical
        • autoHide
        • autoHideTimeout


读前说明

github地址:https://github.com/malte-wessel/react-custom-scrollbars

作用:

快速实现被包裹区域的滚动效果

关于本篇:

在官网以及其他文章中,都是介绍该插件在react class版本中的使用,

未涉及到react hooks版本中的使用方法。

所以本篇就介绍一下该插件在react hooks版本中的实现。


基本使用

安装插件:

npm install react-custom-scrollbars --save

在需要使用的文件中,引入插件:

import { Scrollbars } from 'react-custom-scrollbars';

需要让哪个元素实现滚动效果,就用<Scrollbars ></Scrollbars >包裹住该元素即可。

写个demo:

import React from 'react'
import './scrollPlugin.css' // demo样式
import { Scrollbars } from 'react-custom-scrollbars'; // 引入插件组件// react hooks版本的组件
const ScrollPlugin = () => {return <div className='show-wrap'><ScrollbarsclassName='main' // 设置类名 方便在样式文件中写css代码><ul className='show-ul'> // 要滚动的区域{[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((item, index) => {return <li key={index}>{item}</li>})}</ul></Scrollbars></div>
}export default ScrollPlugin

实现的效果:

在这里插入图片描述

顺便贴一下demo中的css代码:

/* scrollPlugin.css */
.show-wrap {width: 300px;height: 400px;margin-left: 20px;margin-top: 20px;
}.main {width: 100%;height: 100%;overflow: hidden;background-color: pink;border-radius: 12px;
}.show-ul {list-style-type: none;width: 100%;margin: 0;padding: 0;
}.show-ul li {width: 100%;height: 60px;margin-top: 10px;background-color: cyan;border-radius: 12px;line-height: 60px;
}

属性介绍

官方md中给出了一堆属性,

在这里插入图片描述
但是没有注释说明。 有些陌生词汇,导致使用上可能不容易入手。

在这里从上到下,介绍一下常用的几个属性。

上面那些this.后面的变量,都是函数,用的时候要写成函数的形式。

在react hooks版本中,没有this.


onScroll

滚动条滚动的时候,触发handleScroll函数

demo:

import React from 'react'
import './scrollPlugin.css'
import { Scrollbars } from 'react-custom-scrollbars';const ScrollPlugin = () => {const handleScroll = () => { // 这里写滚动函数console.log('滚动条动了')}return <div className='show-wrap'><ScrollbarsclassName='main'onScroll={handleScroll} // 这里写入属性><ul className='show-ul'>{[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((item, index) => {return <li key={index}>{item}</li>})}</ul></Scrollbars></div>
}export default ScrollPlugin

滚动一下,可以看到控制台有输出内容:

在这里插入图片描述


renderView

这个函数是用来改变组件样式的。

样式可以在css文件写,这里就不多介绍了。


renderThumbVertical

改变滚动条样式。

写个demo:

import React from 'react'
import './scrollPlugin.css'
import { Scrollbars } from 'react-custom-scrollbars';const ScrollPlugin = () => {const renderThumb = () => { // renderThumb改变样式时被调用的函数,必须是函数const thumbStyle = { // 设置滚动条样式backgroundColor: 'rgb(9,164,215)',borderRadius: '4px'}return <div style={{...thumbStyle}} />}return <div className='show-wrap'><ScrollbarsclassName='main'renderThumbVertical={renderThumb} // 把新的滚动条样式写入组件><ul className='show-ul'>{[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((item, index) => {return <li key={index}>{item}</li>})}</ul></Scrollbars></div>
}export default ScrollPlugin

效果图:

在这里插入图片描述


autoHide

鼠标离开滚动区域后,滚动条会自动隐藏。

鼠标进入滚动区域后,滚动条会自动显示。

在插件组件中直接写入该属性即可使用:

<ScrollbarsclassName='main'autoHide // 自动隐藏属性>// 滚动内容
</Scrollbars>

autoHideTimeout

鼠标离开滚动区域多少ms后,滚动条才会自动消失。

该属性必须搭配autoHide属性,不然无效。

<ScrollbarsclassName='main'autoHideautoHideTimeout={1000} // 单位ms
>

over~


http://chatgpt.dhexx.cn/article/q2DVfCV5.shtml

相关文章

ScrollView动态更改ScrollbarVisibility属性的Bug

原因&#xff1a; 启动之后发现效果并非预设的那样&#xff0c;原因是因为设置成Permanent后,Viewport的rectTranform发生了变化&#xff0c;导致不会像预设那样实现效果 结论&#xff1a; 最好不要动态更改ScrollbarVisibility&#xff0c;若一定要更改则还要额外写死Viewport…

学习子网掩码

一.子网掩码 1.含义 子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩&#xff0c;它用来指明一个IP地址的哪些位标识的是主机所在的子网&#xff0c;以及哪些位标识的是主机的位掩码。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。 子网掩码是一个3…

# 子网掩码

子网掩码 1、概念简介   子网掩码又叫网络掩码、地址掩码&#xff0c;是一个32位地址&#xff0c;用于屏蔽IP地址的一部分以区别网络号和主机号&#xff0c;并说明该IP地址是在局域网上&#xff0c;还是在远程网上。子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使…

IP与子网掩码

目录 一.IP 1.IP地址 2.IP地址的分类 二.子网掩码 1.子网掩码由32个二进制位表示 2.IP地址和子网掩码作“逻辑与”运算得到网络地址 3.网络中不同主机之间通信 4.A、B、C三类地址的默认子网掩码 5.子网划分的原因 6.子网划分的原理 7.子网掩码及相关参数对应表 8.I…

计算机子网掩码作用,什么是子网掩码?子网掩码的作用是什么?

网络工作人员经常需要处理ip和子网掩码等. 我相信大多数朋友都知道IP的含义&#xff0c;但仍然不了解子网掩码的含义. 希望在了解子网掩码的相关知识的基础上&#xff0c;希望对网络感兴趣的用户能学到一些东西. 什么是子网掩码&#xff1f; 子网掩码也称为网络掩码&#xff0c…

将子网掩码取反_子网掩码

1 基本介绍 子网掩码(subnet mask)是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。以下我们就来深入浅出地讲解什么是子网掩码。 子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0…

计算机子网掩码在线,子网掩码计算器

华军软件园提供的这款子网掩码计算器可以很方便的计算子网掩码,它包含了五款经典的子网掩码计算工具,您可以自由选择,网管必备!子网掩码计算器可以自动划分A、B、C类IP,可以输出划分后的子网掩码、子网位、最多子网数、主机位、最多主机数以及所有的子网列表,并可以将结果…

计算机子网掩码作用,什么是子网掩码 子网掩码的作用是什么?

网络工作人员经常需要与ip和子网掩码等打交道&#xff0c;相信绝大数的朋友都知道IP的意思&#xff0c;但是还不理解子网掩码的意思&#xff0c;下面装机之家小编来为大家介绍下关于子网掩码的相关知识&#xff0c;希望能够对网络感兴趣的用户有所学习。 什么是子网掩码&#x…

Swift: 实现JSON转Model - HandyJSON

很多时候&#xff0c;我们从服务端请求下的数据都是Json格式&#xff0c;我们需要拿这些数据显示到我们的UI界面。 因此&#xff0c;我们的做法基本都会先将json转为方便使用的数据模型&#xff0c;或者也可以直接转字典解决。 在OC中&#xff0c;我们有很多优秀的第三方库帮助…

项目剖析03-swift 网络请求Moya+HandyJSON+RxSwift

项目第一版网络框架用的是siesta,它的缓存与自动刷新确实很好用而且代码很简洁&#xff0c;但是在文件的上传与下载以及对返回类型需要精确匹配要求这方面就很不友好&#xff0c;所以在第二版的我选择了Moya,它是一个网络抽象层&#xff0c;它在Alamofire基础上提供了一系列的抽…

HandyJSON阅读笔记

2019独角兽企业重金招聘Python工程师标准>>> HandyJSON仓库: https://github.com/alibaba/HandyJSON HandyJSON 花了一天半的时间大概阅读学习了一下阿里巴巴开源的HandyJSON库, 只能说是简单的了解一下, Swift Runtime相关的代码没有深入了解. 但是, 收获还是满满的…

iOS swift Alamofire+HandyJSON网络框架封装

iOS swift AlamofireHandyJSON网络框架封装 我们在学习Objective_C时使用的网络框架是AFNetworkingMJExtension&#xff0c;而在swift中AlamofireHandyJSON取代了它&#xff0c;如果你是第一次学习和尝试封装swift的网络框架&#xff0c;可能会遇到一些坑&#xff0c;但踩过这些…

Swift 类似HandyJSON解析Struct

Swift 类似HandyJSON解析Struct HandyJSON从源码解析Struct获取TargetStructMetadata获取TargetStructDescriptor实现TargetRelativeDirectPointerFieldDescriptor和FieldRecordfieldOffsetVectorOffset计算偏移量 代码的验证 HandyJSON HandyJSON是阿里开发的一个在swift上把…

HandyJSON:Swift语言JSON转Model工具库

背景 JSON是移动端开发常用的应用层数据交换协议。最常见的场景便是&#xff0c;客户端向服务端发起网络请求&#xff0c;服务端返回JSON文本&#xff0c;然后客户端解析这个JSON文本&#xff0c;再把对应数据展现到页面上。 但在编程的时候&#xff0c;处理JSON是一件麻烦事。…

HandyJSON和SwiftyJSON的应用

2019独角兽企业重金招聘Python工程师标准>>> 1. HandyJSON的应用 想要通过HandyJSON实现序列化和反序列化, 必须实现HandyJSON协议, 不需要继承NSObject对象, 实现协议必须实现public init(){} 方法. 序列化和反序列化支持struct和enumerate类型. HandyJSON可支持非…

(时频分析学习)Week01:傅里叶级数,S变换与广义S变换

学习内容:了解了傅里叶变换相关内容,掌握了基本的傅里叶函数的性质、特性和背景。了解S变换和广义S变换的公式和具体含义。 s变换: (在"基准"论文中)意义: 公式: (傅里叶原公式),再有ω2πf 和 f(t)x(t)w(τ-t)进行转换 在另一篇论文中: 广义s变换: 加上了一点关…

解构变换矩阵:如何使变换矩阵分解为位移(T),旋转(R),缩放(S)矩阵

解构变换矩阵 给定一个转换的复合矩阵&#xff0c;关于组成该转换的任何单个转换的信息就会丢失。 我们如果有一个复合矩阵&#xff0c;怎么能使其分解为TRS三个矩阵呢&#xff1f;即如何完成下述变化&#xff1a; 其中M是给定的变换矩阵&#xff0c;T是平移矩阵&#xff0c;R是…

SS2022-Z变换-性质-什么是z变换的时移特性?

简 介&#xff1a; 本文介绍了z变换时移特性。 关键词&#xff1a; z变换&#xff0c;时移特性 #mermaid-svg-EnOHOPxDmWhoesDM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EnOHOPxDmWhoesDM .error-icon{fill:#…

【转】传递函数中拉普拉斯变换的s是用来干什么的?

自控书里一上来就到处是s,这个s到底是个什么东西? 好我知道s是拉普拉斯变换出来的,但为什么要搞这样一个变换?这个s的物理意义是什么? 为什么传递函数的极点决定系统的性质? …… 要解答这些问题,首先要从拉普拉斯变换讲起。 -----------------------------------------…

S变换的Python代码

S变换的Python代码 S变换简介S变换Python程序 S变换简介 S变换&#xff0c;又称为Stockwell变换&#xff0c;由R. G. Stockwell于1996年提出。具体的定义如下&#xff1a; S变换在傅里叶域的表示形式为&#xff1a; 离散的S变换为&#xff1a; S变换克服了短时傅里叶变换固…