当我从/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>
4条答案
按热度按时间nx7onnlm1#
回答得有点晚,但肯定有人会像我一样面对这个问题。
我们正在解决的问题
如果您正在构建应用程序并将其部署到服务器,如果在刷新页面后出于任何原因出现空白页面,则我的“问题”的解决方案在package.json中。
您的package.json当前
执行以下更改:
您的主页可能如下所示:
"homepage": "./"
或此"homepage": "."
解决package.json中的问题所需的更改
为了使刷新页面实际加载的东西更改为:
这样,所有内容都将正常加载(我指的所有内容包括存储、上下文、组件、redux等)
我希望这能帮助任何面临同样问题的人,并希望解除一个未定义的错误从你的肩膀上。
进一步解释和有趣的事实在我寻求解决这个谜...
例如,在我的情况下,我希望在我的应用程序中有一个首页和 Jmeter 板。客户端的首页,管理产品的 Jmeter 板显示在首页。
我的文件结构如下所示:
希望你能理解。
nuypyhwy2#
从你的代码来看,
<Route path="/" component={App} />
会导致为每个路由呈现App
组件。因此,如果刷新页面,Page404
将无法呈现它。解决方案:
用
exact
代替/
。eoigrqb63#
这是因为react无法定位用户浏览过的url的历史记录。基本上react属性将搜索保存在历史记录中的url,但这里开发人员没有使用它。要解决这个问题,请遵循以下三个步骤。像这样导入use:从“react-router-dom”导入{ useHistory };赋给一个变量并使用主div/router,所有组件都 Package 在其中
fhity93d4#
我已经看过了,我的问题在package.json中,我在package.json中指定了主页,例如: