使用 useHistory 时通过浏览器历史记录路由似乎不起作用
Routing via browserHistory when using hashHistory doesnt appear to work
不确定我是否做错了什么。
我已经在这个位置上传了一个简化的测试用例:https://github.com/CervantesVive/test-react-router-hash
它加载一个带有 div 和 Link 的 ReactJS 视图,并且都路由到 '/register'
div 通过
完成
browserHistory.push('/register');
Link 只是一个 react-router link。
如果我使用 browserHistory
配置历史记录,那么两者都有效。
如果我使用 hashHistory
配置历史记录,那么只有 link 有效。
ideas/suggestions 我遗漏了什么?
从 react-router 2 开始,您不应使用历史对象进行导航,而应使用路由器。
由于登录是一个路由组件,您可以使用上下文访问路由器:
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');
}
});
这将适用于哈希或浏览器历史记录。
不确定我是否做错了什么。
我已经在这个位置上传了一个简化的测试用例:https://github.com/CervantesVive/test-react-router-hash
它加载一个带有 div 和 Link 的 ReactJS 视图,并且都路由到 '/register'
div 通过
完成browserHistory.push('/register');
Link 只是一个 react-router link。
如果我使用 browserHistory
配置历史记录,那么两者都有效。
如果我使用 hashHistory
配置历史记录,那么只有 link 有效。
ideas/suggestions 我遗漏了什么?
从 react-router 2 开始,您不应使用历史对象进行导航,而应使用路由器。
由于登录是一个路由组件,您可以使用上下文访问路由器:
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');
}
});
这将适用于哈希或浏览器历史记录。