刷新时反应路由器黑屏

时间:2019-12-27 19:44:30

标签: reactjs react-router create-react-app react-router-v4 firebase-hosting

我有一个使用create-react-app的单页应用程序,该应用程序与Firebase托管一起部署。刷新适用于我的/主页路由,但是当我处于/product-details路由并刷新时,它将返回一个空白屏幕。这仅在移动设备上发生。对于桌面浏览器来说,它工作得很好。

为什么我只能在移动设备而不是台式机上看到它?

一些注意事项:

  1. 仅在移动设备(Chrome和Safari浏览器)上发生。工作于 台式机
  2. 我已将其设置为将所有网址重写为index.html
  3. 控制台中没有控制台错误。
  4. 控制台警告说A cookie associated with a cross-site resource at http://google.com/ was set without the SameSite attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite = None and安全. You can review cookies in developer tools under Application>Storage>Cookies and see more details at
  5. 使用react-router ^5.1.2react-router-dom ^5.1.2

这是我的路线:

                <BrowserRouter>
                    {shouldShowNav && <SideNav />}
                    {!isLoading ? (
                        <div
                            className={containerClassName}>
                            <Route exact path='/login' component={LoginPage} />
                            {!userProfile.isAdmin && (
                                <PrivateRoute
                                    exact
                                    path='/'
                                    component={VendorDashboard}
                                    isLoggedIn={isAuthenticated}></PrivateRoute>
                            )}
                            {userProfile.isAdmin && (
                                <PrivateRoute
                                    exact
                                    path='/'
                                    component={ProductManagementPage}
                                    isLoggedIn={isAuthenticated}
                                />
                            )}
                            <PrivateRoute
                                exact
                                path='/new-vendor'
                                component={NewVendor}
                                isLoggedIn={isAuthenticated}
                            />
                            <PrivateRoute
                                exact
                                path='/product-details'
                                component={ProductEditor}
                                isLoggedIn={isAuthenticated}
                            />
                        </div>
                    ) : (
                        <div> Loading ... </div>
                    )}
                </BrowserRouter>

1 个答案:

答案 0 :(得分:0)

这与我的路线设置方式无关。这是我用来将状态保存到sessionStorage中的事件监听器。我使用的是beforeunload,它在移动浏览器中不可用,并说明了为什么刷新仅在桌面上有效。我将其替换为unload

此处的更多信息:Session Storage not being retrieved on mobile browser