【问题标题】:How to prevent react page from re-rendering when using connected-react-router使用connected-react-router时如何防止react页面重新渲染
【发布时间】:2021-01-23 01:47:23
【问题描述】:
-MainPage.js

import { push } from 'connected-react-router';

const showDataPage = () => {
   dispatch(push(ROUTES.DATA))
}

-DataPage.js

export const DataPage = () => {
  const dispatch = useDispatch();

  React.useEffect(() => {
      dispatch(Actions.fetchData());
  }, []);

当我导航到 DataPage 屏幕时,它会调用 fetchData api,大约需要 20 秒才能得到响应。

如果我在 20 秒内转到另一个页面而服务器没有完全响应并返回 DataPage,它将触发另一个 fetchData api。

我只想调用这个 api 来首次渲染这个 DataPage 屏幕。

我知道这可以使用 useState 或 useRef 来完成,但我想要的是重新使用已经渲染的组件,而不是再次重新安装 DataPage。

使用 connected-react-router 中的 push / replace 将挂载新组件。

谢谢。

【问题讨论】:

标签: reactjs use-effect rerender connected-react-router


【解决方案1】:

你可以尝试使用库https://github.com/CJY0208/react-activation制作keep-alive路由器 这个库将帮助您只呈现一次 - 第一次访问页面。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2021-01-11
    • 2018-01-19
    • 2019-10-17
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多