我对我的桌子有以下要求:
我的假设如下:
我能够实现的目标可以在这个沙箱中看到 https://codesandbox.io/s/react-table-infinite-mzkkp?file=/src/MuiTable.js (我无法在这里提供代码,因为它很大)
因此,一般来说,我可以使 Autosizer、CellMeasurer 和 List 组件从反应虚拟化中正常工作。我被困在无限滚动部分。我在官方文档上看到了这个例子,但似乎有点反模式(直接突变状态根本不是一件好事)
所以我试图达到类似的结果,但是如果你能看到,我的 loadMore 函数由于某种原因触发得太早了。它导致几乎每个滚动事件都发送请求。
任何帮助深表感谢。
我已经尝试过的:
<TableRow
{...row.getRowProps({
style
})}
component="div"
>
{row.cells.map((cell) => {
return (
<TableCell {...cell.getCellProps()} component="div">
{cell.render("Cell")}
</TableCell>
);
})}
</TableRow>
Run Code Online (Sandbox Code Playgroud)
此外,尚不清楚如何以这种方式呈现自定义过滤器。
reactjs react-virtualized react-infinite-scroll react-table-v7
我正在努力解决反应路由器和中继集成问题。
到目前为止,我坚持这个例子
它使用useLazyLoadQuery钩子,虽然一切似乎都工作得很好,但我还看到了另一种方法:usePreloadedQuery。
文档说useLazyLoadQuery钩子
如果不小心使用,可能会触发多个嵌套或瀑布式往返,并等到渲染开始数据获取(通常可以比渲染早得多开始),从而降低性能。相反,更喜欢 usePreloadedQuery。
然而,目前尚不清楚如何将其与react-router集成,显然,我不想重新发明我自己的路由器......
我注意到的另一件事是usePreloadedQuery应该与 ; 结合使用
useQueryLoader。同时在文档中,他们只需调用即可直接加载它loadQuery();
所以我不确定哪种方式是首选。
我最终得到了这样的包装:
const WrappedHomePage = () => {
const [queryRef, loadQuery] = useQueryLoader(HomePageQuery);
// does calling it like this make any sense at all?
useMemo(() => {
loadQuery();
}, [loadQuery]);
return <HomePage queryRef={queryRef} />;
};
const HomePage = ({ queryRef }) => {
const query = usePreloadedQuery(
graphql`
query HomePageQuery {
...HomePageContainer_repository
}
`,
queryRef
);
return …Run Code Online (Sandbox Code Playgroud)