reactjs react路由器刷新时出现空白页

unguejic  于 2023-02-22  发布在  React
关注(0)|答案(4)|浏览(381)

当我从/home导航到/dashboard时,路由器工作正常,但当我从/home导航到/profile:id时,路由器会将我导航到该配置文件页面,该页面也工作正常,但当我刷新它时,它会变为空白页面,不会给予我任何404或重定向回主页,我正在使用
一个月一个月一个月一个月一个月一个月一个月一个月一个月二个月一个月
所以,如何摆脱空白页面,如果网址是在/profile/5,然后在刷新页面得到导航回主页或任何应该是适当的,请帮助?
index.js

ReactDOM.render(
 <Provider store={store}>
    <ConnectedRouter history={history}>
        <Switch>
            <Route path="/" component={App} />
            <Route component={Page404} />
        </Switch>
    </ConnectedRouter>
  </Provider>,
  document.getElementById('app-site')
);

App.js

<Switch>
    <Route path={`/login`} component={LoginMember} />
    <Route path={`/registermember`} component={SignUp} />
    <Authentication component={AuthenticateRoute} />
    <Route component={Page404} />
</Switch>

const AuthenticateRoute = ({ match }) => (
 <Switch>
    <Authentication path={`${match.url}`} component={MainApp} />
    <Route component={Page404} />
 </Switch>
);

主应用程序

<Switch>                
    <Route path={`/home`} component={Home} />
    <Route path={`/profile/:id`} component={Profile} />
    <Route component={Page404} />
</Switch>
nx7onnlm

nx7onnlm1#

回答得有点晚,但肯定有人会像我一样面对这个问题。
我们正在解决的问题
如果您正在构建应用程序并将其部署到服务器,如果在刷新页面后出于任何原因出现空白页面,则我的“问题”的解决方案在package.json中。

您的package.json当前

执行以下更改:
您的主页可能如下所示:
"homepage": "./"或此"homepage": "."

解决package.json中的问题所需的更改

为了使刷新页面实际加载的东西更改为:

"homepage": "/"

这样,所有内容都将正常加载(我指的所有内容包括存储、上下文、组件、redux等)
我希望这能帮助任何面临同样问题的人,并希望解除一个未定义的错误从你的肩膀上。

进一步解释和有趣的事实在我寻求解决这个谜...

  • 此解决方案适用于react router v6(对于初学者)-问题主要出现在嵌套路由中(我在非嵌套路由中测试了它,一切都按预期工作,因此我得出结论,嵌套路由在这里起了一定作用)-当我说嵌套路由时,我指的是与原始路由位于不同文件中的路由。
    例如,在我的情况下,我希望在我的应用程序中有一个首页和 Jmeter 板。客户端的首页,管理产品的 Jmeter 板显示在首页。
    我的文件结构如下所示:
-src (Folder)
    --App.js (Have two main routes of /frontpages and /dashboard which renders the files from the routes folder)
    --Routes (Folder)
    ---Dashboard.jsx (inside I have nested the dashboard routes)
    ---Frontpages.jsx (inside I have nested the frontpages routes)
    --Components (Folder)
    ---All the files that get rendered in the routes folder components.

希望你能理解。

nuypyhwy

nuypyhwy2#

从你的代码来看,

<Switch>
  <Route path="/" component={App} />
  <Route component={Page404} />
</Switch>

<Route path="/" component={App} />会导致为每个路由呈现App组件。因此,如果刷新页面,Page404将无法呈现它。
解决方案:
exact代替/

<Route exact  path="/" component={App} />
eoigrqb6

eoigrqb63#

这是因为react无法定位用户浏览过的url的历史记录。基本上react属性将搜索保存在历史记录中的url,但这里开发人员没有使用它。要解决这个问题,请遵循以下三个步骤。像这样导入use:从“react-router-dom”导入{ useHistory };赋给一个变量并使用主div/router,所有组件都 Package 在其中

fhity93d

fhity93d4#

我已经看过了,我的问题在package.json中,我在package.json中指定了主页,例如:

.
.
"homepage": "http://mywebsite.com/relativepath"
.
.

相关问题