我对我的桌子有以下要求:
我的假设如下:
我能够实现的目标可以在这个沙箱中看到 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
我在项目中使用react-infinite-scroll-component,它在对话框之外运行良好。当我滚动到页面底部时,将从服务器获取下一组数据,但我无法在 Material-UI 对话框中获得相同的操作。
\n这是对话框代码:
\n//imports\n\nexport default function Posts() {\n const [open, setOpen] = React.useState(false);\n //more consts\n ...\n const [posts, setPosts] = useState([]);\n const [page, setPage] = useState(1);\n\n const fetchPosts = () => {\n axios.get(`${serverURL}/news?page=${page}`).then((res) => {\n const result = res.data.results;\n setPosts([...posts, ...result]);\n setPage((prev) => prev + 1);\n });\n console.log("page", page);\n };\n\n useEffect(() => {\n fetchPosts();\n }, []);\n\n return (\n <div>\n <h1>News</h1>\n <Button variant="outlined" color="primary" onClick={handleClickOpen}>\n Open News Dialog\n </Button>\n <Dialog\n onClose={handleClose}\n aria-labelledby="customized-dialog-title"\n open={open}\n >\n <DialogTitle id="customized-dialog-title" onClose={handleClose}>\n News\n …Run Code Online (Sandbox Code Playgroud) javascript reactjs react-infinite-scroll-component react-infinite-scroll