goBack()带我到第一个入口,而不是我想去的地方

时间:2015-12-01 15:57:28

标签: reactjs browser-history react-router isomorphic-javascript

我正在创建一个应用程序,其中我登录/注销有一个家,关于,配置文件等。它使用反应路由器,但是当我登录时,我希望应用程序转换到它所在的最后一个路径,它有时工作,例如,如果我访问,然后登录和登录,它会带我回到约,但如果我访问应用程序根目录'/'然后去登录,登录,它会带我回到第一页我曾经开启过(当你打开浏览器或标签时,这将是默认页面)。我这样写了,我觉得我这样做的方式非常幼稚。我在渲染方法中做到了,它被称为很多。我认为它有时会这样做,但我不完全确定。希望得到一些建议,代码:

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);
});

1 个答案:

答案 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;的父级路线。但不是同一水平