javascript - 在 React 中创建一个包含可滚动行和可点击元素的表格
问题描述
与他们的参与者有这个事件的对象:
const myData = {
"event_1": ["1", "2","3"],
"event_2": ["11", "5","8", "9"],
"event_3": ["1", "2","5"],
"event_4": ["1", "2"],
"event_5": ["6", "7","8"],
"event_8": ["1", "6","9"]
}
每个数字代表一个参与者。
例如,其中event_3
有 ids1
和.2
5
我想创建一个这样的用户界面:
对于每个事件,应该存在一行,并且在该行内作为每个参与者的元素(如正方形)。方块应该是可点击的,就像重定向到localhost:3000/participant_id
.
如果行上的元素多于屏幕可以共享的元素,则应该能够水平滚动。
此外,如果行数超过一定数量,则能够垂直滚动。
我知道这不是这个网站上常见的问题,我想知道是否可以这样做(可能使用 Material UI 或 Semantic UI),因为我进行了一些研究,但没有找到可以帮助我的东西。
你对如何在 React 中制作这样的东西有任何想法吗?
解决方案
我建议使用react-virtualized 之类的库(或者出于您的目的,我将使用新版本react-window)。它有一个非常好的文档和大量适用于各种项目的示例。
我建议的主要原因之一是,如果滚动容器中有很多元素,react-virtualized 将通过仅渲染用户可见的元素来优化性能,从而减小 dom 树的大小。
您可能面临的一个缺点是,如果元素的 dom 树非常大并且包含图像,它可能无法以 60fps 运行,因为库将尝试在渲染之前及时测量元素。(这样做是为了等待图像加载,然后调用一个函数来测量元素,然后再渲染它)。
如果您不想这样做,那么我建议您使用语义用户界面为您提供的选项。看看这个例子(可滚动表格)并尝试使用这个组件来提高性能。
*注意,如果您愿意采用第一种方法,那么在尝试您自己的项目之前,您将不得不对他们的文档进行更多阅读。
祝你好运<3
推荐阅读
- ios - 如何使用指定的 shell 命令和配置文件构建 iOS 应用程序扩展
- javascript - 查找所需的对象属性并将其替换为与对象数组相关的值
- excel - VBA Excel目标搜索循环在命名范围内
- java - kotlin 中是否有任何方法可以在“Int”中的特定索引处获取数字?
- c# - asp.net core 3.1 HttpClient,Json序列化两次
- javascript - 按键 UI5 从 flexbox 中删除项目
- r - 如何调用列表元素来计算新的 data.frame 列
- javascript - 如何使用节点和 json 发送 Walmart API Update Bulk Inventory 请求?
- node.js - 如何配置 WebRTC 以连接到我的 TURN 服务器?
- python - 如何在 Django 模型中将 ManyToManyFields 的选择限制为仅特定的外键