【发布时间】:2018-09-06 18:03:28
【问题描述】:
当我填写详细信息并登录时出现错误
未处理的拒绝(TypeError):router.transitionTo 不是函数
我正在使用
“反应”:“^16.4.2”,
“反应域”:“^16.4.2”,
"react-redux": "^5.0.7",
“反应路由器”:“^4.3.1”,
"react-router-dom": "^4.3.1",
“反应脚本”:“1.1.4”,
"redux": "^4.0.0",
"redux-form": "^7.4.2",
这是我的 session.js(action)
import { reset } from 'redux-form';
import api from '../api';
function setCurrentUser(dispatch, response) {
localStorage.setItem('token', JSON.stringify(response.meta.token));
dispatch({ type: 'AUTHENTICATION_SUCCESS', response });
}
export function login(data, router) {
return dispatch => api.post('/sessions', data)
.then((response) => {
setCurrentUser(dispatch, response);
dispatch(reset('login'));
router.transitionTo('/');
});
}
export function signup(data, router) {
return dispatch => api.post('/users', data)
.then((response) => {
setCurrentUser(dispatch, response);
dispatch(reset('signup'));
router.transitionTo('/');
});
}
export function logout(router) {
return dispatch => api.delete('/sessions')
.then(() => {
localStorage.removeItem('token');
dispatch({ type: 'LOGOUT' });
router.transitionTo('/login');
});
}
这是我的 Login.js(容器)
import React, { Component} from 'react';
import { connect } from 'react-redux';
import PropTypes from "prop-types";
import { login } from '../../actions/session';
import LoginForm from '../../component/LoginForm';
import Navbar from '../../component/Navbar';
class Login extends Component {
static contextTypes = {
router: PropTypes.object,
}
handleLogin = data => this.props.login(data, this.context.router);
render() {
return (
<div style={{ flex: "1" }}>
<Navbar />
<LoginForm onSubmit={this.handleLogin} />
</div>
);
}
}
export default connect(null, { login })(Login);
【问题讨论】:
-
transitionTo对于 react-router/react-router-dom 4.x 根本不存在 -
有什么替代方案吗? @AlexanderStaroselsky
标签: javascript reactjs react-redux react-router