首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于的多级延迟加载数据,什么是正确的方法?

对于的多级延迟加载数据,什么是正确的方法?
EN

Stack Overflow用户
提问于 2022-03-25 11:46:59
回答 1查看 861关注 0票数 1

最近,我一直在使用来实现具有可扩展行的多层次表结构,在这种结构中,每一行都应该在单击时执行延迟加载。它用于产品组层次结构,如下所示:

代码语言:javascript
复制
unit-1 (clicking fetches category data lazily)
  category-1 (clicking fetches product data lazily)
    product-1
    product-2
  category-2
    product-3
unit-2
  category-3
    product-4
    product-5

我有两个解决方案:

  • Sub组件惰性加载示例用于React (https://react-table.tanstack.com/docs/examples/sub-components-lazy) --它只关注一个层次的深度,因此我不确定如何使其达到多层次,因为我仍然不太熟悉React,而且该示例似乎不是为此目的创建的。我尝试将其设置为多层次,但在传递(.isExpanded、.id等)

等行属性时遇到了困难。

作为上面表格示例的一个注意事项,我计划使用一个API端点,其参数如下:

代码语言:javascript
复制
?level=root&id=0 (initial units list data for the table on page load)
?level=unit&id=2 (returns categories of unit-2) 
...

但是,这个逻辑似乎不足以支持行单击获取,因此,如果我遵循第二种方法,我想至少需要两个端点。

感谢您的阅读,欢迎您提出任何意见!祝您今天愉快。

EN

回答 1

Stack Overflow用户

发布于 2022-03-25 16:50:15

作为一个更新,我可以让事情大部分与上面的第二个选项一起工作。作为API端点上的一个注意事项,我可以在不同的参数下使用相同的API端点和相同的钩子两次。(这部分当然是一个特定的项目,但它可能给那些有类似场景的人提供了一个想法)

为了获取表的初始数据,我将硬编码参数提供给钩子,以便在页面加载时使用initialData呈现表。

代码语言:javascript
复制
const { data: initialData, isLoading } = useGetLevels(
  {
    level: 'root',
    id: [0],
    ...
  }
 );

在第二个例子中,我使用了enabled: false,当单击一个行时,我调用refetch(),因此获取附加数据并将其与初始数据合并以更新表,并相应地扩展该行:

代码语言:javascript
复制
const {
  data: partialData,
  refetch,
} = useGetLevels(
  {
    level,
    id,
    ...
  },
  false
);

useGetLevels看起来是这样的:

代码语言:javascript
复制
function useGetLevels(
filterParams,
enabled
) {
return useQuery(
  ['levels', filterParams],
  () => fetchLevels(filterParams),
  {
    enabled,
  }
);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71616483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档