当前位置: 首页 > news >正文

SideBar 侧边导航与内容区域交互重写【Ant Design Mobile】

需求:SideBar 侧边导航与内容区域交互

  1. 点击侧边栏某一项时,相对应内容区域滚动到视口顶部
  2. 滚动视口区域,到某一项内容区域,侧边栏选中状态也会跟着变化
const SideBarAgain: React.FC<PopupProps> = (props) => {// 父组件传过来的值const { tabList } = propsconst mainElementRef = useRef<HTMLDivElement>(null)// 用来监听页面滚动事件const scroll = useScroll(mainElementRef);const mainElement = mainElementRef.currentconst state = useReactive({ activeKey: '1' });const handleScroll = (key?:string) => {// 滚动时,需要修改侧边栏选中状态// 过滤出元素顶部到视窗的距离大于0的元素const currentKey = tabList.filter((item: { key: string })=>{const element = document.getElementById(`anchor-${item.key}`)if (!element) returnconst rect = element.getBoundingClientRect()if (rect.top >= 0) {return item}})// 判断如果currentKey大于0,则选取第一个key值if(currentKey.length){state.activeKey = currentKey[0].key}else{state.activeKey = tabList[tabList.length-1].key}// 点击侧边栏传入的ID,并滚动到对应位置if(key){document.getElementById(`anchor-${key}`)?.scrollIntoView({behavior: "smooth"})state.activeKey = key}}useEffect(() => {if (!mainElement) returnmainElement.addEventListener('scroll', () => handleScroll)return () => {mainElement.removeEventListener('scroll', () => handleScroll)}}, [])// 利用scroll的变化监听handleScrolluseLayoutEffect(() =>  handleScroll,[scroll])return (<div className='sider'><SideBar activeKey={state.activeKey} onChange={(key)=>handleScroll(key)}>{tabList.map((item: { key: string, title: string }) => (<SideBar.Item key={item.key} title={item.title} />))}</SideBar><div className='main' ref={mainElementRef}>{tabList.map((item: { key: string; title: string; text: string}) => (<div key={item.key} id={`anchor-${item.key}`} ><h2>{item.title}</h2>{item.text}</div>))}</div></div>)
}export default SideBarAgain;

相关文章:

SideBar 侧边导航与内容区域交互重写【Ant Design Mobile】

需求&#xff1a;SideBar 侧边导航与内容区域交互 点击侧边栏某一项时&#xff0c;相对应内容区域滚动到视口顶部滚动视口区域&#xff0c;到某一项内容区域&#xff0c;侧边栏选中状态也会跟着变化 const SideBarAgain: React.FC<PopupProps> (props) > {// 父组件…...

JavaEE初阶(5)多线程案例(定时器、标准库中的定时器、实现定时器、线程池、标准库中的线程池、实现线程池)

接上次博客&#xff1a;JavaEE初阶&#xff08;4&#xff09;&#xff08;线程的状态、线程安全、synchronized、volatile、wait 和 notify、多线程的代码案例&#xff1a;单例模式——饿汉懒汉、阻塞队列&#xff09;_di-Dora的博客-CSDN博客 目录 多线程案例 定时器 标准…...

SpringCLoud——Nacos配置中心

Nacos实现配置管理 统一配置管理 配置更新热更新 统一配置的创建是在UI界面中完成的&#xff1a; 首先我们点击【配置管理】然后点击【配置列表】&#xff1a; 然后我们就看到了配置管理界面&#xff0c;但是此时这里是空的&#xff0c;我们可以创建一些配置文件&#xff1a…...

05目标检测-区域推荐(Anchor机制详解)

目录 一、问题的引入 二、解决方案-设定的anchor boxes 1.高宽比&#xff08;aspect ratio&#xff09;的确定 2.尺度(scale)的确定 3.anchor boxes数量的确定 三、Anchor 的在目标检测中是怎么用的 1、anchor boxes对真值bounding box编码的步骤 2、为什么要回归偏移量…...

SpringBoot如何保证接口安全?

对于互联网来说&#xff0c;只要你系统的接口暴露在外网&#xff0c;就避免不了接口安全问题。如果你的接口在外网裸奔&#xff0c;只要让黑客知道接口的地址和参数就可以调用&#xff0c;那简直就是灾难。 举个例子&#xff1a;你的网站用户注册的时候&#xff0c;需要填写手…...

构建可扩展的应用:六边形架构详解与实践

面试题分享 云数据解决事务回滚问题 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮…...

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 解决方案

error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 解决方案 使用Git提交时报错&#xff0c;代码如下: $ git push -u origin "master" Counting objects: 100% (95/95), done. Delta compression using up to 12 threads Compressing ob…...

基于ssm智能停车场031

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

【Git】万字git与gitHub

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理在git和GitHub时的笔记与感言 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0;&…...

C++版本的OpenCV实现二维图像的卷积定理(通过傅里叶变换实现二维图像的卷积过程,附代码!!)

C版本的OpenCV库实现二维图像的卷积定理过程详解 前言一、卷积定理简单介绍二、不同卷积过程对应的傅里叶变换过程1、“Same”卷积2、“Full”卷积3、“Valid”卷积 三、基于OpenCV库实现的二维图像卷积定理四、基于FFTW库实现的二维图像卷积定理五、总结与讨论 前言 工作中用…...

打开深度学习的锁:(1)入门神经网络

打开深度学习的锁 导言PS&#xff1a;神经网络的训练过程一、导入的包和说明二、数据的预处理2.1 数据集说明2.2 数据集降维度并且转置2.3 数据预处理完整代码 三、逻辑回归3.1 线性回归函数公式3.2 sigmoid函数公式 四、初始化函数五、构建逻辑回归的前向传播和后向传播5.1 损…...

02- pytorch 实现 RNN

一 导包 import torch from torch import nn from torch.nn import functional as F import dltools 1.1 导入训练数据 batch_size, num_steps 32, 35 # 更改了默认的文件下载方式&#xff0c;需要将 article 文件放入该文件夹 train_iter, vocab dltools.load_data_time_…...

算法课作业1

https://vjudge.net/contest/581138 A - Humidex 模拟题 题目大意 给三个类型数字通过公式来回转化 思路 求e的对数有log函数&#xff0c;不懂为什么不会出精度错误&#xff0c;很迷&#xff0c;给的三个数字也没有顺序&#xff0c;需要多判断。 #include<cstdio>…...

linux文本处理 两行变一行

linux简单文本处理 [rootkvm ~]# cat test 1.1.1.1 test1 2.2.2.2 test2 3.3.3.3 test3 192.168.1.2 test4 10.23.9.19 test5 cat test | awk /^[0-9]/{T$1;next;}{print T,$1}1.1.1.1 test1 2.2.2.2 test2 3.3.3.3 test3 192.168.1.2 test4 10.23.9.19 test5 cat test | …...

第二次面试 9.15

首先就是自我介绍 项目拷打 总体介绍一下项目 谈一下对socket的理解 在数据接收阶段&#xff0c;如何实现一个异步的数据处理 谈一谈对qt信号槽的理解 有想过如何去编写一个信号槽吗 你是如何使用CMAKE编译文件的 C11特性了解些啥 shared_ptr 和 unique_ptr 的运用场景 …...

基于matlab实现的平面波展开法二维声子晶体能带计算程序

Matlab 平面波展开法计算二维声子晶体二维声子晶体带结构计算&#xff0c;材料是铅柱在橡胶基体中周期排列&#xff0c;格子为正方形。采用PWE方法计算 完整程序: %%%%%%%%%%%%%%%%%%%%%%%%% clear;clc;tic;epssys1.0e-6; %设定一个最小量&#xff0c;避免系统截断误差或除零错…...

Minio入门系列【2】纠删码

1 纠删码 Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量&#xff08;N/2&#xff09;的硬盘&#xff0c;仍然可以恢复数据 1.1 什么叫纠删码 纠删码是一种用于重建丢失或损坏数据的数学算法。 纠删码&#xff08;e…...

基于永磁同步发电机的风力发电系统研究(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

5.后端·新建子模块与开发(自动模式)

文章目录 学习资料自动生成模式创建后端三层 学习资料 https://www.bilibili.com/video/BV13g411Y7GS?p11&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e 自动生成模式创建后端三层 首先&#xff0c;运行起来若依的前后端整个项目&#xff0c;…...

vue的data为什么要写成data(return{})这样而不是data:{}这样?

在Vue.js中&#xff0c;为什么要将data写成一个返回对象的函数data()而不是一个普通的对象data: {} 为什么&#xff1f; 因为Vue.js的组件实例是可复用的&#xff0c;而且它们可以在应用中多次实例化。通过将data定义为一个返回对象的函数&#xff0c;可以确保每个组件实例都…...

MySQL基础运维知识点大全

一. MySQL基本知识 1. 目录的功能 通用 Unix/Linux 二进制包的 MySQL 安装下目录的相关功能 目录目录目录binMySQLd服务器&#xff0c;客户端和实用程序docs信息格式的 MySQL 手册manUnix 手册页include包括&#xff08;头&#xff09;文件lib图书馆share用于数据库安装的错…...

javascript获取样式表的规则及读取与写入

CSSStyleSheet是继承了StyleSheet的接口属性,它是用于找当前文档中的<link rel“” href“”…>这样文件的&#xff0c;有以下属性&#xff1a;lenght,cssRules,title,href,type,deleteRule,insertRule等 CSSStyleRule是继承于CSSRule&#xff0c;它是用于找<link re…...

什么是promise?

是JavaScript中用于处理异步操作的一种机制。 异步操作&#xff0c;例如从服务器获取数据、读取文件、执行数据库查询等等。 经典使用&#xff1a;Axios 是一个基于Promise的HTTP客户端 Promise具有三个状态&#xff1a; Pending&#xff08;待定&#xff09;&#xff1a;Pr…...

从零开始学习软件测试-第45天笔记

monkey事件 事件&#xff1a;对app进行的操作&#xff0c;比如触摸事件&#xff0c;滑动事件...动作&#xff1a;构成一个事件所需要的步骤。 调整事件的百分比 adb shell monkey -p 包名 -v -v --pct-xxx 百分比 次数>输出文件的路径 分析日志有没有报错 到日志中去找…...

visual studio常用快捷键

CtrlM、CtrlO 折叠到定义 CtrlM、CtrlM 折叠当前定义 CtrlM、CtrlA 折叠全部 CtrlK、CtrlD 自动编排代码格式 F12 转到定义 ShiftF12 查看所有定义 ctrl] 转到定义首部或尾部 ctrlX 未选中文本时&#xff0c;剪切/删除光标所在行。ctrlV 未选中文本时&#xff0c;粘贴到…...

数据变换:数据挖掘的准备工作之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

Go语言实践案例之简单字典

一、程序要实现效果&#xff1a; 在命令行调用程序的时候&#xff0c;可以在命令行的后面查询一个单词&#xff0c;然后会输出单词的音标和注释。 二、思路分析&#xff1a; 定义一个结构体 DictRequest&#xff0c;用于表示翻译请求的数据结构。其中包含了 TransType&#…...

笔试面试相关记录(3)

&#xff08;1&#xff09;String String和String.append()的底层实现 C中string append函数的使用与字符串拼接「建议收藏」-腾讯云开发者社区-腾讯云 (tencent.com) String String 在 第二个String中遇到\0就截止&#xff0c;append()的方法则是所有字符都会加在后面。 &…...

第6章_瑞萨MCU零基础入门系列教程之串行通信接口(SCI)

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…...

开源免费的流程图软件draw.io

2023年9月16日&#xff0c;周六上午 想买微软的visio&#xff0c;但发现不是很值得&#xff0c;因为我平时也不是经常需要画图。 所以我最后还是决定使用开源免费的draw.io来画图 draw.io网页版的网址&#xff1a; Flowchart Maker & Online Diagram Software draw.io的…...

网站做网络营销/临沂seo优化

NOTE&#xff1a; 1.绝不要返回pointer或reference 指向一个local stack 对象&#xff0c;或返回reference 指向一个heap-allocated对象&#xff0c;或返回pointer 或reference指向一个 local static 对象而有可能同时需要多个这样的对象。转载于:https://www.cnblogs.com/chip…...

怎么用手机做网站/网站排名推广工具

MSYS&#xff1a;Minimal GNU&#xff08;POSIX&#xff09;system on Windows&#xff0c;是一个小型的GNU环境&#xff0c;包括基本的bash&#xff0c;make等等。是Windows下最优秀的GNU环境。&#xff08;是否厌倦了Cygwin蜗牛般的shell环境&#xff0c;试试MSYS中的rxvt吧&…...

拍卖网站建设公司/百度销售是做什么

些括哪面试体细节包的具&#xff0c;用计用水杯尊重名片握手交换接递前台。酸性中性碱性&#xff0c;算机奥1为(焊条药皮成分。管理释)子弧(名词解等离切割。能正伤方现焊陷类型和形状部缺探伤缝内法是大小的探确发&#xff0c;.射线C波B超声.磁粉。时的锈钢些主要问题铁素体不…...

wordpress广告插件中文/怎么查百度收录

【题目描述】给定一个二叉树和其中的一个结点&#xff0c;请找出中序遍历顺序的下一个结点并且返回。注意&#xff0c;树中的结点不仅包含左右子结点&#xff0c;同时包含指向父结点的指针。 【解题思路1】暴力解法 //1.若给定的节点pNode的右子树不为空&#xff0c;则中序遍历…...

武汉seo关键字优化/信息流优化师需要具备哪些能力

把该窗体的KeyPreview属性设成true private void frmMain_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode Keys.F1) { } }转载于:https://blog.51cto.com/flydragon0815/719558...

网站建设总体设计/国际新闻头条

&#xfeff;&#xfeff;要想深入了解Java必须对JDK的组成, 本文对JDK6里的目录做了基本的介绍,主要还是讲解 了下JDK里的各种可执行程序或工具的用途 Java(TM) 有两个平台 JRE 运行平台&#xff0c;包括Java虚拟机&#xff0c;运行类库&#xff0c;java应用程序装载器。 JRE不…...