在没有页面重新加载的情况下更改路由器更改URL

时间:2016-04-26 03:17:04

标签: reactjs react-router

当我使用react-router 0.13.3时,没关系:我正在更改网址并且没有重新加载过渡。

现在,在react-router 2.0中,如果我手动更改网址,我的应用会完全重新加载而不是简单的重定向。 我该如何解决?

我想用这个:

<Link to="/routename">link</Link>
而不是这个:

import {Router, Route, IndexRoute} from "react-router";
import App from './components/App';
import FrontPage from './components/frontPage/FrontPage';
import User from './components/user/User';
module.exports = (
    <Router>
        <Route path="/" component={App}>
            <IndexRoute component={FrontPage}/>
            <Route path="/user/:userid" component={User}/>
        </Route>
    </Router>
);

在少数特殊情况下。

路线

{{1}}

3 个答案:

答案 0 :(得分:2)

没有解决方案。我们可以onClick脚本或Link

https://github.com/reactjs/react-router/issues/3411

答案 1 :(得分:1)

通常是由于某些错误,使用DevTools(Shift + CTRL + I)在chrome上运行网页。在控制台启用保留日志(保留日志)并查看发生了什么,您可能会看到一些错误,解决它,它应该无需刷新。

答案 2 :(得分:0)

React Router v4-重定向组件

react-router v4推荐的方法是允许您的render方法捕获重定向。使用状态或道具来确定是否需要显示重定向组件。

  1. 首先,从configure: error: X11 not found but required, configure aborted. 导入Redirect

    react-router
  2. 定义点击处理程序

    import { Redirect } from 'react-router';
    
  3. 更改渲染方法,如

    handleOnClick = () => {
        // some action...
        // then redirect
        this.setState({redirect: true});
    }
    
    • 示例代码:

      render() {
          if (this.state.redirect) {
          return <Redirect push to="/yourpath" />;
          }
      
          return ( <button onClick={this.handleOnClick} type="button">Button</button> );
      }
      

参考:https://reacttraining.com/react-router/web/api/Redirect