ユーザーがボタンをクリックしたときに、012JSの経路を変更する方法を探しています。react-router
を使用しています。ReactJS:クリックイベントに基づいて経路を変更する
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
コンポーネントがページに表示されるデフォルトのいずれかになります。ここでは
は、関連するコード(部品の詳細は簡潔にするために省略されている)私のjsx
ファイルからです。ユーザーがButton_
コンポーネントのLink
をクリックすると、Splash
コンポーネントがDOMのLogin
コンポーネントに置き換えられます。
私がテストするためにPythonのサーバーを実行しているので、URLはhttp://localhost:8000/public/#/?_k=hqkhl0
私は現在、私はそれがやりたいしませんしたコードのように見えます。手動でhttp://localhost:8000/public/#/login
と入力すると、ページは変わりますが、ボタンをクリックしても機能しません。
また、 'Button_'の 'handleClick'機能内でbrowserHistory.push()
を使用してページを手動で変更しようとしましたが(正確な場所にonClick
プロパティを追加しました)、これは私の望む結果をもたらしませんでした。
私が最初にこれは明らかに、http://localhost:8000/#/login
へのリダイレクトには適切ではない結果
browserHistory.push('/#/login');
を試してみました。
私はその後、間違って、再び、http://localhost:8000/public/public/#/login
へのリダイレクトが生じ
browserHistory.push('public/#/login');
を試してみました。
Login
コンポーネントに正しくルーティングするにはどうすればよいですか?
が聞こえますすべてのリクエストを - > index.html(あなたの反応アプリでした)にルーティングすると、反応ルータはすべてのルーティングを処理できます。 – deowk
@deowk pythonサーバーはindex.htmlが存在するフォルダを指していますが、ルーティングはまだ機能していません。 – JavascriptLoser
例えば、私がexpressを使っていた場合、すべてのリクエストをindex.htmlにルーティングしていますか?> '' 'app.get( '*'、function(req、res){ res.sendFile( path.resolve(__ dirname、 './index.html')); }); '' ' – deowk