我使用React 0.13.3和react-router 1.0.0-rc3。
我试图在登录/注销时将用户转发到另一个页面,但总是得到错误" _servicesRouterContainer2.default.get(...)。transitionTo不是函数"。
我的代码看起来像这样(省略了相关部分):
在app.js中我设置了路线:
import { Router, Route } from 'react-router';
import RouterContainer from './services/RouterContainer';
let routes = (
<Router>
<Route path="/" component={Master}>
<Route path="some-component" component={SomeComponent}/>
<Route path="login" component={LoggedOut}/>
<Route path="*" component={ErrorPage}/>
</Route>
</Router>
);
RouterContainer.set(routes);
React.render(RouterContainer.get(), document.body);
然后将路由存储在RouterContainer中:
var _router = null;
export default {
set: (router) => _router = router,
get: () => _router
};
现在我尝试在调用LoginActions.loginUser / LoginActions.logoutUser时将用户转换到其他页面:
import RouterContainer from '../services/RouterContainer';
export default {
loginUser: (response) => {
...
let nextPath = RouterContainer.get().getCurrentQuery().nextPath || '/';
RouterContainer.get().transitionTo(nextPath);
},
logoutUser: () => {
...
RouterContainer.get().transitionTo('login');
}
};
转换不起作用,我的控制台显示错误&#34; _servicesRouterContainer2.default.get(...)。transitionTo不是函数&#34;。
我做错了什么?
答案 0 :(得分:0)
React Router 1.0不再使用this.history.pushState(null, path)
。请参阅Upgrade Guide,它可以让您看到0.13.x和1.0之间的变化
您应该使用历史记录模块和React Router 1.0来解决您的问题:
var str = '2x^2-14x+5';
var re = /([+-]?\d{1,4})/g;
var result = str.match(re);
有关完整的使用示例,请参阅transitions app。