reactjs - 使用 React-Router 在 Reactjs 中重定向
问题描述
单击登录页面中的按钮后,我想重定向到主页..但是当我单击地址栏中的按钮时,会显示主页的路径(它重定向到主页)..但它不会呈现与该路径相关的组件。它仍然显示带有主页地址的登录页面。所以,我必须刷新页面才能呈现主页。这里有什么问题???
在我的登录页面中......这是我用于按钮 onClick 的功能......
gotopage()
{
this.props.history.push('/home')
}
在我的索引,js页面..
import React from "react";
import { render } from "react-dom";
import {BrowserRouter as Router,Route,Redirect ,browserHistory} from "react-router-dom";
import { Firstpage } from "./Firstpage";
import { Login } from "./Login";
import { Home } from "./Home";
import createBrowserHistory from 'history/createBrowserHistory'
const history=createBrowserHistory();
class App extends React.Component {
render(){
return(
<Router history={browserHistory}>
<div>
<switch>
<Route path="/" component={Firstpage} exact> </Route>
<Route path="/home" component={Home}> </Route>
<Route path="/login" render={(props) => <Login {...props} history=
{history} } />}> </Route>
</switch>
</div>
</Router>
);
}
}
解决方案
我有几点建议。由于您使用的是 React 路由器 4.x BrowserRouter 没有历史记录,根据文档删除它。将您的代码更新为以下内容,看看它是否有效。
将 switch 更改为 Switch,我看不到它是从 react-router 导入的。在登录组件中使用来自 react-router 的 withRouter。
export default withRouter(Login)
如下更新主路由配置。
<Router history={browserHistory}>
<Switch>
<Route path="/" component={Firstpage} exact> </Route>
<Route path="/home" component={Home}> </Route>
<Route path="/login" render={(props) => <Login {...props}/>}> </Route>
</Switch>
</Router>
在此处阅读有关 withRouter、BrowserRouter 的更多信息https://reacttraining.com/react-router/web/api/BrowserRouter。
有关更多详细信息,请查看以下帖子 https://medium.com/@AkyunaAkish/understanding-react-router-4-df73a66d96c4
推荐阅读
- excel - 电子表格 | OR-Function 中的优先级队列/组合 ISNA() 和 Cell=0
- node.js - 如何从另一个承诺中访问结果?
- android - xamarin android将图像插入在线数据库并以图像视图显示它来自相同的数据库但不同的设备
- c# - C# System.Data.SqlClient.SqlException 无法将值 NULL 插入列 ERROR FOREIGN KEY
- android - 循环播放多个视频
- python - 使用 Google API 抓取 Google 搜索结果 - 一遍又一遍地返回相同的结果
- c - 未知进程正在用 0x00 字节覆盖我的应用程序文件的内容
- python - Python Pandas 在不同日期和日期范围内重新采样特定时间
- docker-compose - Azure DevOps 上的 Docker Compose 任务无法启动守护进程
- c# - 即使我有正确的范围,我也无权访问 Google Drive 中的 appDAtaFolder (https://www.googleapis.com/auth/drive.appdata) [403]