React-router browserHistory.push 不重定向

zsa*_*ayn 4 javascript reactjs react-router

尝试使用browserHistory.push方法以编程方式更改我的路线。

它将更改路由(每个浏览器地址栏)但不会更新视图。

这是我的代码 App.jsx

const AppStart = React.createClass({

  render: function() {
    return (
      <MuiThemeProvider>
        <Router history={hashHistory}>
          <Route path="/" component={Main}>
            <Route path="experiences" component={Experiences} />
            <Route path="people" component={Profiles} />
            <Route path="login" component={Login} />
            <IndexRoute component={Home}/>
          </Route>
        </Router>
      </MuiThemeProvider>
    );
  }
});

ReactDOM.render(
  <AppStart />,
  document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)

成分:

handleLoginRedirect(e) {
    browserHistory.push('/experiences');
  },

  render() {
    return (
      <div className='row'>
        <div className='col-sm-10 col-sm-offset-1'>
          <form role='form'>
           <RaisedButton label="Redirect" onClick={this.handleLoginRedirect} />
          </form>
        </div>
      </div>
    );
Run Code Online (Sandbox Code Playgroud)

Kum*_*arM 5

您的路由器配置hashHistory在您推进时使用browserHistory

很容易错过这样的事情,这是可以理解的。

  • 更换hashHistorybrowserHistory在你Router像这样:

<Router history={browserHistory}>

完整片段:

const AppStart = React.createClass({

  render: function() {
    return (
      <MuiThemeProvider>
        <Router history={browserHistory}>
          <Route path="/" component={Main}>
            <Route path="experiences" component={Experiences} />
            <Route path="people" component={Profiles} />
            <Route path="login" component={Login} />
            <IndexRoute component={Home}/>
          </Route>
        </Router>
      </MuiThemeProvider>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)