react-flip-move结合array-move实现前端列表置顶效果

你有没有遇到这样的需求?点击左侧列表项,则像聊天会话窗口一样将被点击的列表项置顶。
如果只是单纯的置顶的话,直接使用array-move就可以实现了,但置顶效果多少有点突兀~

先上代码,直接使用array-move的情况(说明:本文只展示功能实现核心代码)

import { useState } from 'react';
import { arrayMoveImmutable } from 'array-move';const [list, setList] = useState([{id: 1,name: '小米手机'},{id: 2,name: '自然堂'},{id:3,name: '欧莱雅'},{id: 4,name: '新的会话'},{id: 5,name: '新的会话'}
])const getIndex = (item) => {return list.findIndex((current) => current.id === item.id)
}const handleSelectItem = (listItem) => {const currentIndex = getIndex(listItem)// 会话置顶const newList = arrayMoveImmutable(list, currentIndex,  0);setList(newList)
}return (<div className={styles.list}>{list.map((item) => {return (<divkey={item.id}onClick={() => handleSelectItem(item)}><div className='truncate w-190px'>{item.name}</div></div>)})}</div>
)

到这里,我们可以看到会话置顶的效果已经有了,但是就是有亿点点突兀,哈哈哈!

在这里插入图片描述

所以,我为了给它加一个平滑的过渡,找到了一个很好用的轮子,就是react-flip-move ,使用起来也非常方便,直接包裹一层就好啦

import FlipMove from 'react-flip-move';//...... 此处省略500行代码return <div className={styles.list}><FlipMove>{list.map((item) => {return (<divkey={item.id}onClick={() => handleSelectItem(item)}><div className='truncate w-190px'>{item.name}</div></div>)})}</FlipMove></div>

说实话,使用起来真的非常方便,也没有任何的复杂配置,接下来请看实现效果:

在这里插入图片描述
录屏转gif图片感觉还是有点卡卡的,真实效果其实更丝滑些,感兴趣的小伙伴可以直接上手试一下哦,嘿嘿~

更多参考链接: react-flip-move: 使用翻转技术在DOM更改(例如列表重新排序)之间轻松实现动画效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓手机网页如何阻止input框长按出现绿色水滴控件

在安卓手机的网页中&#xff0c;阻止输入框&#xff08;input框&#xff09;长按时出现的绿色水滴控件&#xff08;这通常是文本选择控件&#xff09;&#xff0c;可以通过一些CSS和JavaScript技巧来实现。这些控件通常用于文本选择和编辑&#xff0c;但在某些情况下&#xff0…

Ansible及其优势是什么?

Ansible是一款极其简单的开源的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点。实现了批量系统配置&#xff0c;批量程序部署&#xff0c;批量运行命令等功能。同时Ansible是基于模块工作&#xff0c;…

数据可视化私有化部署:为何成本居高不下?

尽管在可视化设计这行干了好多年&#xff0c;也接手过不少项目&#xff0c;但昂贵的私有化部署费用总能让我发出由衷的感叹&#xff1a;“这几十万一年也太贵了&#xff01;”。可以预见&#xff0c;数据可视化软件私有化部署所带来的高昂成本&#xff0c;将是许多企业面临的问…

Jmeter进行压力测试不为人知的秘密

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是免…

每日一练【快乐数】

一、题目描述 202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这…

Hive_Spark_left()函数

在SQL中&#xff0c;LEFT()函数是一个字符串函数&#xff0c;用于从一个字符串的左侧开始提取指定数量的字符。这个函数通常接受两个参数&#xff1a; 第一个参数是要从中提取字符的字符串。 第二个参数指定要提取的字符数。 语法如下&#xff1a; LEFT(string_expression,…

Elasticsearch高级

文章目录 一.数据聚合二.RestAPI实现聚合三.ES自动补全(联想)四.数据同步五.elasticsearch集群 一.数据聚合 在ES中的数据聚合&#xff08;aggregations&#xff09;可以近似看做成mysql中的groupby分组,聚合可以实现对文档数据的统计、分析、运算,常见的聚合的分类有以下几种…

源代码编译cuda opencv

先下载opencv 从这里https://opencv.org/releases/ 下载最新版本的opencv-4.8.0-windows.exe 从这里https://github.com/opencv/opencv_contrib/tags 下载opencv的扩展版本&#xff0c;这个是cuda对cuda的支持 下载cmake 从这里https://cmake.org/files/v3.28/下载最新版本最新…

基于APM(PIX)飞控和mission planner制作遥控无人车-从零搭建自主pix无人车普通舵机转向无人车-1(以乐迪crossflight飞控为例)

1.前期准备 准备通过舵机转向的无人车地盘、遥控器、地面站电脑、飞控等。安装驱动程序、端口程序、netframwork等&#xff0c;不再赘述。 2.安装固件 安装ardurover固件&#xff0c;如果在线失败&#xff0c;选择官方最新的固件下载到本地&#xff0c;选择本地安装。 3.调试…

智能仓库PTL管理系统

清晰电子墨水屏显示&#xff0c;无纸化作业&#xff0c;超低功耗 无线通信&#xff0c;穿透力强&#xff0c;极简部署 支持声光提醒&#xff0c;极大提高作业效率 适用场景&#xff1a;工厂&#xff0c;仓库&#xff0c;物流&#xff0c;货品分类等等

阿里千问Qwen-72 b在中文测试中击败了GPT-3.5

2023.11.30 我们在 ModelScope 和 Hugging Face 上发布了Qwen-72B和Qwen-72B-Chat&#xff0c;它们在 3T 令牌上进行训练并支持 32k 上下文&#xff0c;以及Qwen-1.8B和Qwen-1.8B-Chat 。 我们还增强了 Qwen-72B-Chat 和 Qwen-1.8B-Chat 的系统提示功能&#xff0c;请参阅示例…

认识Docker

Docker 是世界领先的软件容器平台&#xff0c;所以想要搞懂 Docker 的概念我们必须先从容器开始说起。 1.1 什么是容器? 先来看看容器较为官方 一句话概括容器&#xff1a;容器就是将软件打包成标准化单元&#xff0c;以用于开发、交付和部署。 容器镜像是轻量的、可执行的…

树专题 —— 二叉树层序遍历

大家好&#xff0c;我是 方圆。本篇关于二叉树的层序遍历&#xff0c;主要以题目为主&#xff0c;而且我觉得层序遍历是求解二叉树问题中最简单的&#xff0c;学会了基本的层序遍历&#xff0c;在这基础上的扩展题也能迎刃而解&#xff0c;如果大家想要找刷题路线的话&#xff…

希宝猫罐头怎么样?专业人士告诉你质量好又便宜的猫罐头推荐

作为从业6年的宠物护理师来说&#xff0c;只买合适的&#xff0c;贵的不如好的&#xff0c;只要配方不出错营养跟得上&#xff0c;观察自家猫咪体质真的基本不怎么出错。希望大家看完这篇文章&#xff0c;各位铲屎官都能买到满意的猫罐头。那么希宝猫罐头在各方面表现怎么样呢&…

UI咨询公司-蓝蓝设计:顶级秘籍:提升UI设计吸引力的3大绝招

想要让你的UI设计在海量应用中脱颖而出&#xff0c;吸引用户眼球吗&#xff1f;如果你正在寻找提升UI设计吸引力的绝妙方法&#xff0c;那么你绝对不能错过本文&#xff01;我们将为你揭示顶级UI设计师都不会告诉你的3大绝招&#xff0c;让你轻松掌握提升UI设计吸引力的关键技巧…

网络运维与网络安全 学习笔记2023.11.30

网络运维与网络安全 学习笔记 第三十一天 今日目标 实现AP自动注册、配置WLAN业务参数、无线终端通过wifi互访 实现AP自动注册 项目背景 企业内网的大量AP已经通过DHCP的方式获得IP地址 为了实现后期大量AP的统一管理&#xff0c;希望通过AC实现集中控制 在AC设备上&#…

c 语言常见的易错题分析

在C语言中&#xff0c;有一些常见的易错题需要特别注意。以下是一些例子&#xff1a; 1&#xff0c;数组越界&#xff1a;在C语言中&#xff0c;数组的索引是从0开始的。因此&#xff0c;一个长度为n的数组的索引范围应该是0到n-1。如果尝试访问超出这个范围的索引&#xff0c…

SpringBoot框架结合Redis实现分布式锁

一、SpringBoot结合 Redis实现分布式锁 1.1、什么是分布式锁 分布式锁&#xff0c;是在分布式的环境下&#xff0c;才会使用到的一种同步访问机制&#xff0c;在传统的单体环境里面&#xff0c;不存在分布式锁的概念&#xff0c;只有在分布式环境里面&#xff0c;才有分布式锁…

赴日程序员高年薪过上“躺平”生活?

日本的IT行业想要达到的高薪&#xff0c;也是需要很多资历和经验的&#xff0c;不过即使你是新卒&#xff0c;也能拿到相比国内来说让你满意的薪资。 刚入职的起薪是20-23万日元/月&#xff0c;情报信息业出身&#xff0c;技术掌握不错&#xff0c;起薪是25万-30万日元。之后经…