最近,我一直在使用来实现具有可扩展行的多层次表结构,在这种结构中,每一行都应该在单击时执行延迟加载。它用于产品组层次结构,如下所示:
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我有两个解决方案:
等行属性时遇到了困难。
作为上面表格示例的一个注意事项,我计划使用一个API端点,其参数如下:
?level=root&id=0 (initial units list data for the table on page load)
?level=unit&id=2 (returns categories of unit-2)
...但是,这个逻辑似乎不足以支持行单击获取,因此,如果我遵循第二种方法,我想至少需要两个端点。
感谢您的阅读,欢迎您提出任何意见!祝您今天愉快。
发布于 2022-03-25 16:50:15
作为一个更新,我可以让事情大部分与上面的第二个选项一起工作。作为API端点上的一个注意事项,我可以在不同的参数下使用相同的API端点和相同的钩子两次。(这部分当然是一个特定的项目,但它可能给那些有类似场景的人提供了一个想法)
为了获取表的初始数据,我将硬编码参数提供给钩子,以便在页面加载时使用initialData呈现表。
const { data: initialData, isLoading } = useGetLevels(
{
level: 'root',
id: [0],
...
}
);在第二个例子中,我使用了enabled: false,当单击一个行时,我调用refetch(),因此获取附加数据并将其与初始数据合并以更新表,并相应地扩展该行:
const {
data: partialData,
refetch,
} = useGetLevels(
{
level,
id,
...
},
false
);useGetLevels看起来是这样的:
function useGetLevels(
filterParams,
enabled
) {
return useQuery(
['levels', filterParams],
() => fetchLevels(filterParams),
{
enabled,
}
);
}https://stackoverflow.com/questions/71616483
复制相似问题