javascript - 使用 browserhistory 更改 url 的 react 路线但没有任何反应

标签 javascript reactjs react-router

我正在尝试让 React 路由器工作。这是我的代码:

var hashHistory = require('react-router-dom').hashHistory;
var BrowserRouter = require('react-router-dom').BrowserRouter;
var Route = require('react-router-dom').Route;
var ReactDOM = require('react-dom');
var React = require('react');
var Index = require('./index');
var Login = require('./login');

ReactDOM.render(
    <BrowserRouter history={hashHistory}>
        <div>
            <Route path="/" component={Index} />
            <Route path="/login" component={Login} />
         </div>
    </BrowserRouter>,
    document.getElementById('main-content')
);

然后在我的 index.js 中我这样做:

 <div className="navbar-nav" onClick={() => this.props.history.push('/login')}>
                    Log in
                </div>

这会使 url 更改为/login 但不会呈现登录文件。怎么了?

最佳答案

当您切换到 /login 时,它似乎与 / 匹配:

<Route path="/" component={Index} />

尝试向路由添加 exact 属性,如下所示:

<Route exact path="/" component={Index} />

您还可以尝试更改匹配顺序:

<Route path="/login" component={Login} />
<Route path="/" component={Index} />

关于javascript - 使用 browserhistory 更改 url 的 react 路线但没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44328600/

相关文章:

reactjs - 有没有一种简单的方法可以使用 Apollo Client 2.5 for React 管理本地状态? 'read' 相当于 'client.writeData' 是什么?

javascript - 在 react 中的两个组件之间共享 Prop /状态

javascript onsubmit更改字段值

javascript - 响应式移动菜单 - Jquery Toggle

javascript - 如何创建将覆盖 ng-disabled 的自定义 Angular Directive(指令)?

javascript - this.context 在使用 react-router 时不包含 router

react-router - React Router 的 <Link> 组件中的状态是什么?

javascript - Angular2 Http 请求

javascript - 使用 redux 更新状态时,react 中的推送工作

reactjs - React 使用一个事件处理程序来处理不同的输入