我在我的项目中使用react router
,当我点击登录按钮时,它renders
App
组件的内容,但会在same page
上显示它们。当我点击new page
时,我希望在login
上显示,帮助我
import React, { Component } from 'react';
import * as service from '../services/service';
import '../App.css'
import '../index.css'
import App from'../App'
import { Link, Redirect, Router, Route, browserHistory,IndexRoute } from 'react-router';
// import createHistory from 'history/createBrowserHistory'
class Login extends Component {
constructor(props) {
super(props);
this.state = {
messages: []
}
}
onSubmit() {
browserHistory.push('/world');
}
render() {
const { messages } = this.state;
return (
<div className="App">
<header>
<h2> Doctor Login Page </h2>
</header>
<form>
<Router history={browserHistory}>
<Route path="/world" component={App}/>
</Router>
<br /><br /><br />
Username: <input name='email' placeholder='Email' /><br /><br />
Password: <input name='password' placeholder='Password' type='password' />
<br /><br />
<button onClick={() => this.onSubmit()}>Login</button>
</form>
</div>
);
}
}
export default Login;
答案 0 :(得分:1)
看起来你想以两种方式解决这个问题
1)使用react-router库中的'exact path'属性
<Route exact path="/world" component={App}/>
2)删除路由下面的代码并将其放入组件本身并声明其自己的路由,因为上面的代码运行主路由器以及将静态JSX留在路由器下面。
<Route exact path="/" component={Login}/>
<Route exact path="/world" component={App}/>
答案 1 :(得分:0)
确保将最具体的路线放在顶部。一旦找到匹配项,React route将扫描每条路由,以防万一您没有使用'exact'关键字将重定向到该路由。
示例:
<Route path="/world" component={App}/>
<Route path="/" component={Login}/>
我以前有这个问题,如果将来有人遇到这种情况,可以对路线进行重新排序。