Facebook flux
のReact JS
アーキテクチャを使用してアプリケーションを構築しています。ログインフォームがあるアプリの基本部分を作成しました。ストアでユーザーを検証するためにノードサーバーから結果をフェッチしています。サーバーから結果を取得しています。成功した後、ユーザーをホームページにリダイレクトするにはどうすればよいかわかりません。
反応ルーターコンポーネントについて読みましたが、クライアント側でリダイレクトできますが、ストアのajaxから結果をフェッチするときにリダイレクトできません。私を助けてください。
transitionTo
ミックスインのNavigation
関数を使用する必要があります: http://git.io/NmYH 。これは次のようになります。
// I don't know implementation details of the store,
// but let's assume it has `login` function that fetches
// user id from backend and then calls a callback with
// this received id
var Store = require('my_store');
var Router = require('react-router');
var MyComponent = React.createClass({
mixins: [Router.Navigation],
onClick: function() {
var self = this;
Store.login(function(userId){
self.transitionTo('dashboard', {id: userId});
});
},
render: function() {
return: <button onClick={this.onClick}>Get user id</button>;
}
});
ルーターに必要なreact要素のプロパティを追加し、次のようにルーターを使用すると、うまくいきました。
// this is the redirect
this.context.router.Push('/search');
// this should appear outside the element
LoginPage.contextTypes = {
router: React.PropTypes.object.isRequired
};
module.exports = LoginPage;
これはうまくいくはずです
var Store = require('Store');
var Navigatable = require('react-router-component').NavigatableMixin
var LoginComponent = React.createClass({
mixins: [ Navigatable ],
onClick: function() {
Store.login(function(userId){
this.navigate('/user/' + userId)
}.bind(this));
},
render: function() {
return <button onClick={this.onClick}>Login</button>;
}
});