gpt4 book ai didi

javascript - 在React中重新加载页面时如何避免404错误?

转载 作者:行者123 更新时间:2023-12-01 01:08:31 25 4
gpt4 key购买 nike

我有一个使用 Primer-react 模板开发的 React 应用程序。它有一个管理仪表板,仪表板侧面板中有几条路线。我在我的 index.js 中设置了一个 Auth 路由,当我转到每个路由时它都工作得很好。但是当重新加载页面时,页面显示404页面未找到!

我保护 AuthRoute 中的“/”路径,以便以“/”开头的每个路径都受到保护(我在仪表板内有路由,如“/usertable”、“/users”、“/payments”等)。我不确定这里发生了错误,因为有一些路由(在仪表板之外)应该在没有身份验证的情况下访问,例如“/Signin”。

我假设,如果我能够保护仪表板内每条路线的精确路径(例如精确路径=“/usertable”)而不是保护所有“/”路径,404问题将得到解决!但是,当我这样做时,注销后,我可以通过浏览器后退按钮返回仪表板,这会产生另一个问题。我该如何解决这个问题?

index.js

import React from 'react';
import { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';
import { render } from 'react-dom';
import Auth from './auth';
import AppProvider from './components/AppProvider/AppProvider';
import Dashboard from './containers/Dashboard';
import { ForgotPassword, Signin, ResetPassword } from './pages';
import registerServiceWorker from './registerServiceWorker';

const AuthRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={props => {
if (Auth.isAuthenticated()) {
return <Component {...props} />
}
else {
return <Redirect to={{ pathname: '/signin' }} />
}
}} />
)

export default render(
<AppProvider>
<BrowserRouter>
<Switch>
<Route exact path="/forgot" component={ForgotPassword} />
<Route exact path="/signin" component={Signin} />
<Route exact path="/reset/:token?" component={ResetPassword} />
<AuthRoute path="/" component={Dashboard} />
<Route path="/" component={Dashboard} />
</Switch>
</BrowserRouter>
</AppProvider>
, document.getElementById('root'));

registerServiceWorker();

最佳答案

当您重新加载页面时,您会收到 404 错误,因为您在实际收到 html 文档响应之前首先访问了服务器,并且您的服务器可能仅配置为在 获取'/'

您需要设置服务器以捕获所有传入网址 (/*) 并呈现 index.html

查看此详细答案以获取更多见解:React-router urls don't work when refreshing or writing manually

关于javascript - 在React中重新加载页面时如何避免404错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55380091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com