Reactjs 提交后重新路由到索引React/Redux

Reactjs 提交后重新路由到索引React/Redux,reactjs,redux,redux-form,Reactjs,Redux,Redux Form,使用Redux表单和React,我向一个express API发出post请求,该API更新数据库中的用户信息。这工作得很好,但是,在按下提交按钮后,它无法将我重定向到索引页。在我的应用程序中的其他地方,this.context.router.push('/')已经起作用,但这里没有 import React, { Component, PropTypes } from 'react'; import { reduxForm } from 'redux-form'; import { updat

使用Redux表单和React,我向一个express API发出post请求,该API更新数据库中的用户信息。这工作得很好,但是,在按下提交按钮后,它无法将我重定向到索引页。在我的应用程序中的其他地方,
this.context.router.push('/')
已经起作用,但这里没有

import React, { Component, PropTypes } from 'react';
import { reduxForm } from 'redux-form';
import { updateUser } from '../actions/index';
import { Link } from 'react-router';

class UsersUpdate extends Component {
  static contextTypes = {
    router: PropTypes.object
  };


  onSubmit(props) {
    this.props.updateUser(props, this.props.params.id)
    .then(() => {
      this.context.router.push('/');
    });
  }


  render() {
    const { fields: { name, email, day }, handleSubmit } = this.props;
    return(
      <form onSubmit={handleSubmit(this.onSubmit.bind(this))}>
        <h3>Update User</h3>
        <div className={`form-group`}>
          <label>Name</label>
          <input type="text" className="form-control" {...name}/ >
        </div>

        <div className={`form-group`}>
          <label>email</label>
          <input type="text" className="form-control" {...email}/ >
        </div>

        <div className={`form-group`}>
          <label>day</label>
          <input type="text" className="form-control" {...day}/ >
        </div>

        <button type="submit" className="btn btn-primary">Submit</button>
        <Link to="/" className="btn btn-danger">Cancel</Link>
      </form>
    );
  }
}


export default UsersUpdate = reduxForm({
  form: 'UsersUpdateForm',
  fields: ['name', 'email', 'day']
}, null, { updateUser })(UsersUpdate);
我知道这可能是一个愚蠢的错误,但我花了太长的时间来研究它!任何帮助都将不胜感激

这是我的应用程序中的一个函数,可与
this.context.router.push('/')
一起使用


updateUser
不会从API调用返回承诺,因此您永远不会输入
.then()
语句。我认为要想让它工作,updateUser必须返回请求,然后简单地发送或类似的东西。在任何情况下,您都必须返回API调用承诺

export function updateUser(props, id) {
  const request = axios.post(`${ROOT_URL}/users/${id}`, props);
  return (dispatch) => {
      dispatch ({
        type: UPDATE_USER,
        payload: request
      };
      return request;
}

我找到了答案,基本上正如Jeremy所说,但问题在于我的express API。我未能在我的
帖子中放置
res.send
。谢谢你的帮助。

不幸的是,它没有工作。我忘了提到我正在使用redux promise作为中间件。我的理解是,它为我回报了承诺。对吗?我有其他类似的功能,工作,我会编辑我原来的职位,以显示我的工作功能。
export function createUser(props) {
  const request = axios.post(`${ROOT_URL}/users/newUser`, props);
  return {
    type: CREATE_USER,
    payload: request
  };
}
export function updateUser(props, id) {
  const request = axios.post(`${ROOT_URL}/users/${id}`, props);
  return (dispatch) => {
      dispatch ({
        type: UPDATE_USER,
        payload: request
      };
      return request;
}