我花了好几天的时间来解决这个问题,我不知道它会是什么。我已经测试了一切。反应路由器browserHistory.push('/')不能在码头服务器上工作,在本地工作
我在本地有一个ReactJS项目设置,我有一个登录页面,然后将您重定向到一个页面,然后几个页面需要登录才能查看它们。这一切都在当地完美运作。当我将它推送到应该与我的环境完全相同的登台服务器时,它是一个码头环境,那么这一个功能就会中断:登录时它不会将URL更改为“/”,它只会保持“ /登录”。页脚和标题都出现(他们只能设置为显示一旦登录),所以我不知道为什么会发生这种情况。
我可以点击菜单链接,并按预期转到任何页面,似乎只是自动重定向不起作用。
的代码(删除无关的代码):
import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import {
Alert,
} from 'react-bootstrap';
import { browserHistory } from 'react-router';
import { login } from '../../Actions/login';
class LoginForm extends Component {
static propTypes = {
login: PropTypes.func.isRequired,
loggedIn: PropTypes.bool.isRequired,
loggingIn: PropTypes.bool.isRequired,
error: PropTypes.bool,
}
static contextTypes = {
router: PropTypes.object,
};
constructor(props) {
super(props);
this.state = {
email: null,
password: null,
invalidEmail: false,
invalidPassword: false,
};
}
componentWillReceiveProps(nextProps) {
if (nextProps.loggedIn) {
this.context.router.push('/');
//browserHistory.push('/');
}
}
}
我曾经尝试都:this.context.router.push('/');
和browserHistory.push('/');
,都工作在本地,但在服务器上没有工作。
我得到:this.context.router.history未定义 –
你使用的时候'this.context.router.push( '/')得到任何错误;'或'browserHistory.push( '/');' ? –
没有这两个在本地工作正常,但没有在服务器上..我不知道为什么它不适用于什么应该是相同的环境。 –