前端页面需要进行身份验证,如果验证不通过则需要跳转到登录页,并且在登录页不需要验证身份信息。
但是还有等写到如何获取当前路由,则就出现了这个问题:
replace is not a function
代码如下:
import React from 'react';
import { Route, IndexRoute,browserHistory } from 'react-router';
import { Main,AdminMain,AdminLogin} from './containers';
import {loadAuthIfNeeded} from './actions/admin/auth'
const preload = promise => (nextState, replace, cb) => {
if (__SERVER__ || nextState.location.action === 'PUSH') {
promise().then(() => cb());
} else {
cb();
}
};
export default store => {
const authPromise = () => store.dispatch(loadAuthIfNeeded());
const requireLogin = (nextState, replace, cb) => {
const user = store.getState().async.user;
if (!user) {
replace('/admin/login')
}
cb();
};
return (
<Route path="/" component={Main} onEnter={preload(authPromise)}>
<Route path="admin" component={AdminMain} onEnter={preload(requireLogin())}>
<Route path="login" component={AdminLogin}/>
</Route>
</Route>
);
};
请问,这个是什么问题呢,找了好多资料也都是这么写的
确认一下是不是版本问题,React Router v4 已经彻底重写了 API 和组件。
React Router V4 中文文档
可能你找的资料和你使用的版本不一致,看一下 package.json 文件的 ReactRouter 版本信息。