我正在寻找一种方法,当用户点击按钮时,使用react-router
更改reactJS中的路线。
以下是我的jsx
文件中的相关代码(为简洁起见省略了组件的详细信息):
var React = require('react');
var ReactDOM = require('react-dom');
var {Route, Router, IndexRoute, hashHistory, browserHistory} = require('react-router');
var {Link, IndexLink} = require('react-router');
var Main = React.createClass({
render: function(){
return(
<div>
<header>
<Router history={hashHistory}>
<Route path='/' component={Splash}></Route>
<Route path='login' component={Login}/>
</Router>
</header>
<footer>
<Button_/>
</footer>
</div>
);
}
});
var Login = React.createClass({
render: function(){
return(
<div>This is the login component</div>
);
}
});
var Button_ = React.createClass({
handleClick: function(e){
e.preventDefault();
},
render: function(){
return(
<Link to='/login' activeClassName='active'>LOGIN</Link>
);
}
});
var Splash = React.createClass({
render: function(){
return(
<div>This is the Splash component</div>
);
}
});
ReactDOM.render(<Main/>, document.getElementById('app'));
正如您现在可能看到的那样,Splash
组件是页面上显示的默认组件。当用户点击Link
组件中的Button_
时,我希望Splash
组件替换为DOM中的Login
组件。
我正在运行python服务器进行测试,因此网址看起来像http://localhost:8000/public/#/?_k=hqkhl0
我目前的代码并没有按照我的意愿去做。如果我手动输入http://localhost:8000/public/#/login
,页面会更改,但点击该按钮不起作用。
我还尝试在&#39; handleClick&#39;中使用browserHistory.push()
手动更改页面。功能按钮_&#39; (并且还在正确的位置添加了onClick
属性),但这并没有给我我想要的结果。
我第一次尝试
browserHistory.push('/#/login');
这导致重定向到http://localhost:8000/#/login
,显然不对。
然后我尝试了
browserHistory.push('public/#/login');
导致重定向到http://localhost:8000/public/public/#/login
,再次,错误。
如何成功路由到Login
组件?
答案 0 :(得分:0)
您可以尝试将登录路由实现为启动路由的子路由,这可以减轻导致错误级别的问题,可以这么说。
<Router history={hashHistory}>
<Route path='/' component={Splash}>
<Route path='/login' component={Login}/>
</Route>
</Router>
答案 1 :(得分:0)
在你的handleClick函数中试试这个:
this.props.router.replace('login')
这是“react-router”:“^ 3.0.2”,
答案 2 :(得分:0)
file_put_contents(public_path() . "/" . $fileName, file_get_contents($url));
RRD为我们提供了useHistory挂钩,我们可以使用它来访问浏览器的历史对象和history.push('/ path')方法将浏览器的URL推送到我们在机架内传递的URL。