我正在创建一个应用程序,其中我登录/注销有一个家,关于,配置文件等。它使用反应路由器,但是当我登录时,我希望应用程序转换到它所在的最后一个路径,它有时工作,例如,如果我访问,然后登录和登录,它会带我回到约,但如果我访问应用程序根目录'/'然后去登录,登录,它会带我回到第一页我曾经开启过(当你打开浏览器或标签时,这将是默认页面)。我这样写了,我觉得我这样做的方式非常幼稚。我在渲染方法中做到了,它被称为很多。我认为它有时会这样做,但我不完全确定。希望得到一些建议,代码:
constructor(props, context) {
super(props, context);
this.state = UserStore.getState();
this.context = context;
}
render() {
console.log(this.state.user.get('authenticated'));
if(this.state.user.get('authenticated')){
this.context.history.goBack();
}
return (
//stuff
)
我是否应该在我访问的每条路线上将状态推入历史记录中,我还注意到如果我在登录之前等待一段时间它有时会正确执行,也许它会将其添加到历史记录中稍晚或需要一些时间?不完全确定如何调试它,console.log(this.context.history)只是显示了它的一堆功能,我想我可能会在错误的地方寻找它?
路线:
export default (
<Route component={App}>
<Route path="/" component={Dashboard} />
<Route path="dashboard" component={Dashboard} onEnter={requireAuth} />
<Route path="about" component={About} />
<Route path="profile" component={Profile} onEnter={requireAuth}/>
<Route path="login" component={LoginSignupPage} />
<Route path="channels" component={Channels} />
</Route>
);
注入react-router
import React from 'react';
import ReactDOM from 'react-dom';
import Iso from 'iso';
import createBrowserHistory from 'history/lib/createBrowserHistory';
import { Router } from 'react-router';
import alt from 'altInstance';
import routes from 'routes.jsx';
import injectTapEventPlugin from 'react-tap-event-plugin';
window.React = React;
injectTapEventPlugin();
/*
* Client side bootstrap with iso and alt
*/
Iso.bootstrap((state, _, container) => {
alt.bootstrap(state);
ReactDOM.render(<Router history={createBrowserHistory()} children={routes} />, container);
});
答案 0 :(得分:1)
<Route path="/" component={App}>
<IndexRedirect to='dashboard' />
<Route path="dashboard" component={Dashboard} onEnter={requireAuth} />
<Route path="about" component={About} />
<Route path="profile" component={Profile} onEnter={requireAuth}/>
<Route path="login" component={LoginSignupPage} />
<Route path="channels" component={Channels} />
</Route>
像这样更改路线可能会解决您的问题。路径&#34; /&#34;应该是&#34;登录&#34;的父级路线。但不是同一水平