使用hashHistory时通过browserHistory进行路由似乎不起作用

时间:2016-03-06 02:38:56

标签: reactjs react-router

不确定我是否做错了。

我已在此位置上传了一个简化的测试用例:https://github.com/CervantesVive/test-react-router-hash

它加载一个带有div和Link的ReactJS视图,并且两者都路由到' / register'

div通过

完成
browserHistory.push('/register');

链接只是一个反应路由器链接。

如果我使用browserHistory配置历史记录,那么两者都有效。

如果我使用hashHistory配置历史记录,则只有链接有效。

关于我缺少什么的任何想法/建议?

1 个答案:

答案 0 :(得分:1)

react-router 2开始,您不应该使用历史记录对象进行导航,而应该使用路由器。

由于Login是一个路由组件,您可以使用上下文访问路由器:

import React, { PropTypes } from 'react';
import { Link } from 'react-router';

export default React.createClass({
    contextTypes: {
        router: React.PropTypes.object.isRequired
    },
    render() {
        return (
            <div>
                <div onClick={ this.onRegister }>Reg Button</div>
                <Link to='/register' >
                    Register Link
                </Link>
            </div>
        )
    },
    onRegister() {
        console.log('register button');
        this.context.router.push('/register');
    }
});

这适用于哈希或浏览器历史记录。