Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么脱机时基于路由反应PWA重新蚀刻延迟加载块_Reactjs_Progressive Web Apps_Service Worker - Fatal编程技术网

Reactjs 为什么脱机时基于路由反应PWA重新蚀刻延迟加载块

Reactjs 为什么脱机时基于路由反应PWA重新蚀刻延迟加载块,reactjs,progressive-web-apps,service-worker,Reactjs,Progressive Web Apps,Service Worker,我正在尝试使用CRA和SWR进行PWA以获取数据,所以我做到了 serviceWorker.register(); 然后创建minifist.json文件 我根据路由加载了一些组件。 因此,当我试图在浏览器上测试脱机流时,在打开“网络”选项卡时,通过“到达路由器链接”更改url,使应用程序重新获取失败的组件块(cuz offline status),从而导致错误边界触发错误 提示:在离线之前,我确实访问了该页面,因此应该已获取块。 其次,我如何添加带有CRA和PWA的自定义脱机页面 更新: 下

我正在尝试使用CRA和SWR进行PWA以获取数据,所以我做到了

serviceWorker.register();
然后创建minifist.json文件

我根据路由加载了一些组件。 因此,当我试图在浏览器上测试脱机流时,在打开“网络”选项卡时,通过“到达路由器链接”更改url,使应用程序重新获取失败的组件块(cuz offline status),从而导致错误边界触发错误

提示:在离线之前,我确实访问了该页面,因此应该已获取块。

其次,我如何添加带有CRA和PWA的自定义脱机页面

更新: 下面是处理错误案例的代码

export const dev = axios.create({ ...config.dev });
// useSWR fetcher function.
export const fetcher = (url: string) =>
  dev
    .get(url)
    .then((res) => res.data.data)
    .catch(
      (err) => err?.response?.data?.message || err.message || err?.data?.message
    );

axiosRetry(dev, {
  retries: 3,
  retryDelay: (retryCount) => {
    return retryCount * 1500;
  },
});
我确实在顶层全局添加了fetcher函数

   <SWRConfig
        value={{
          fetcher,
        }}
      >
    ...
  </SWRConfig>

...
在使用useSWR的组件中

 const { data: actions, error }: any = useSWR(url);

  if (error)
    return (
      <h3 className="title">
        Opps, {error} please try again later
      </h3>
    );
const{data:actions,error}:any=useSWR(url);
如果(错误)
返回(
Opps,{error}请稍后再试
);

如前所述,出现此问题的原因可能是某个主要组件中存在某些代码逻辑,而与延迟加载无关。 如果您检查控制台,您将看到以下错误。此错误导致应用程序失败

TypeError: b.map is not a function
    at Auth App Page.180ff7f0.chunk.js?__WB_REVISION__=cdce21b6ef032b90bc09:1
    at Ko (react-dom.production.min.js:153)
    at Ma (react-dom.production.min.js:175)
    at ms (react-dom.production.min.js:263)
    at cu (react-dom.production.min.js:246)
    at su (react-dom.production.min.js:246)
    at Zs (react-dom.production.min.js:239)
    at react-dom.production.min.js:123
    at scheduler.production.min.js:19
    at Hi (react-dom.production.min.js:122)

解决此问题后,您的应用程序将按预期运行。

您找到解决方案了吗?@PouyaJabbarisani,没有,您有什么建议可以尝试吗?如果用户脱机,是否要显示自定义脱机页面?如果是这样的话,那么您提到的第一个问题就变得无关紧要了。@VimalPatel,到目前为止没有,我使用SWR来获取数据,所以我想显示最后获取的数据,这正在发生,但大约5秒钟后,页面再次重绘了块,因此,应用程序崩溃。看起来您的服务人员正在后台更新,这就是它再次重新读取区块的原因。