私のプロジェクトでは、React Router を含めることにしました。私の逆流ストアの 1 つは、いくつかの BL に基づいてパスを把握し、それを変更する必要があります。最初にNavigation
、ストア内にミックスインを含めて実行しようとしましthis.transitionTo("Foo");
たが、エラーがスローされました:「Uncaught TypeError: 未定義のプロパティ 'router' を読み取れません」。
誰かが、「RefluxJS ストアに存在しないthis.transitionTo
コンテキスト () を介してルーター プロパティにアクセスしている可能性が高い」と提案しました。これは理解できます。this.context.router
ただし、プログラマチックに、または任意の外部 JS モジュールからルーター パスを変更する方法が必要です。
私のコードは次のようになります。
// routes.js
//////////////////////////////////////////////////////////
var Router = require('react-router');
var Route = Router.Route;
var App = require('./app');
var Comp = require('./components/comp');
var routes = (
<Route path='/' handler={App}>
<Route name='Foo' path='/foo' handler={Comp}/>
</Route>
);
module.exports = routes;
// main.js
//////////////////////////////////////////////////////////
var React = require('react');
var Router = require('react-router');
var routes = require('./Routes');
var appElement = document.getElementsByTagName('body');
Router.run(routes, Router.HistoryLocation, function(Root, state) {
React.render(<Root params={state.params} query={state.query} />, appElement);
});
// comp.js
//////////////////////////////////////////////////////////
var React = require("react");
var Reflux = require("reflux");
var Actions = require("../actions/actions.js");
var SomeStore = require("../stores/some-store.js");
var Comp = React.createClass({
render: function() {
return (
<h1>Hello World</h1>
);
}
});
module.exports = Comp;
// store.js
//////////////////////////////////////////////////////////
var SomeStore = Reflux.createStore({
onSomeAction: function() {
// CHANGE ROUTER PATH HERE TO /foo
}
});
module.exports = SomeStore;
どんな助けでも大歓迎です!