javascript - Material UI (Scrollspy) - React - 使用标签在列表中移动并自动滚动到索引
问题描述
如果我有一个大的项目列表,每个项目都有一个类别,
const categories: string[] = [0, 1, 2, 3, 4, 5];
const items: {name: string, category: number}[] = [{name: "foo", category: 1}, {name: "bar", category: 1}, {name: "foobar", category: 2}, {name: "barfoo", category: 3}, ... etc.];
..在material-ui中,它们被用作类别的选项卡标题:
<AppBar>
<Tabs
value={tabIndex}
onChange={handleChange}
indicatorColor="secondary"
variant="scrollable"
scrollButtons="auto"
>
{categories.map((i) => (
<Tab
key={i}
label={i}
/>
))}
</Tabs>
</AppBar>
然后,我在选项卡标题下有一长串项目,这些项目按它们的类别排序。
我如何使用选项卡在列表中按顺序移动,方法是根据所选选项卡自动滚动到位置中的第一个类别,以及在滚动经过列表中的特定第一个索引时自动更新选项卡位置。
对于一个视觉示例:
我怎么能在材料 UI 和反应中实现这样的目标?总之,
- 滚动浏览具有类别并按类别排序的大型项目列表
- 从选项卡选择自动滚动到第一个列表位置类别
- 根据列表滚动位置自动选择选项卡
解决方案
您正在寻找的组件是Scrollspy,它是材料 ui 的未来组件。
目前他们已经在名为AppTableOfContents的材料 ui doc 中实现了组件。如果您在右侧的文档中看到内容部分。
https://github.com/mui-org/material-ui/issues/16359 在这里我找到了两个解决方案
- 使用react-scrollspy
- 使用useScrollspy Hook(试试这个)
推荐阅读
- javascript - 为导入的 CSS 文件添加前缀
- html - 如何设置 layout-wrap 仅在 gt-sm 时应用?
- excel - Excel 数据透视表 - 合并 2 张工作表中的数据 - 显示的总和不正确
- hibernate - 尝试在 Spring Boot 自动配置的 DataJpaTest 中使用 entityManagerFactory 时获取对 entityManagerFactory 的循环引用
- javascript - XML 的 UI5 屏幕尺寸相关属性
- php - PHP:如何按键合并两个嵌套数组
- android - 寻求帮助,让机器人通过听取用户输入在活动之间移动
- arrays - 当我尝试对阵列进行泛洪填充时,为什么我的物理内存没有达到 100% 的容量?
- javascript - 为什么我的 ajax 请求 form_with 被页面上的另一个 rails 表单阻止?
- d3.js - 在 d3 中动态附加形状