当用户退出时,如何阻止 reactjs 重新呈现页面?

How do I stop reactjs from re-rendering the page when the user tabs out?

提问人:BrenD 提问时间:11/17/2023 最后编辑:BrenD 更新时间:11/17/2023 访问量:36

问:

非常一般的问题:我有一个相对简单的 react/nextjs 页面,上面有一个图形界面。每次我在Firefox上更改选项卡并重新访问页面时,页面都会重新呈现并导致界面重置。我怎样才能阻止这种情况?我尝试在相关组件上使用备忘录,但无济于事。

使用一些代码片段进行编辑,一些变量名称已被审查:

这是一个包含一个开关的备忘录,该开关根据变量“t”返回内容。

const PageContents = memo(function PageContents({t}) {
    console.log("re-rendering the page contents...")
    switch(t) {
    case "graph":
        console.log("graph tab")
        return(
        <>
        <Graph data={data}/>   
        </>
        )
    ...other cases...
});

返回:

return (
<>
    <Helmet>
         <title>Title</title>
    </Helmet>
    <MenuAppBar position="absolute"/>
    <Container component="main" maxWidth={false} >
    <Stack direction={"row"} justifyContent={"space-between"}>
        <Box pt={3} display={"flex"}>
            <Typography variant="h4">
            Schema: {schema}
            </Typography>
        </Box>
        <TabBar/>
    </Stack>
    <BasicBreadcrumbs/>
    <PageContents t={tab}/> //'tab' comes from router.query
    </Container>
</>
)
javascript html reactjs next.js

评论

0赞 Jahedul Hoque 11/17/2023
请分享一些相关代码,以便清楚地了解问题。
0赞 Kamran 11/17/2023
理想情况下,切换选项卡不应重新呈现 UI 组件,因此请尝试共享一些可能导致此问题的有用代码
0赞 BrenD 11/17/2023
@Kamran 谢谢,我想知道这是否是预期的功能。我用一些代码片段更新了这个问题。但是,我还删除了杂乱无章的文档顶部的残留 useState(),这似乎已经解决了这个问题。您知道 useState() 会导致这种行为的任何原因吗?
1赞 DBS 11/17/2023
我想不出任何 React 原因会发生这种情况,但是如果后台选项卡进程闲置时间足够长,或者系统内存不足,它们会杀死后台选项卡进程。如果是这样的话,你就无能为力了。
0赞 Kirankumar Ambati 11/17/2023
@BrenD 示例代码沙箱将有助于更好地回答这个问题。谢谢!

答:

0赞 BrenD 11/25/2023 #1

我通过删除组件顶部所有未使用的useState()来解决这个问题。