Reactjs 提交后重新路由到索引React/Redux
使用Redux表单和React,我向一个express API发出post请求,该API更新数据库中的用户信息。这工作得很好,但是,在按下提交按钮后,它无法将我重定向到索引页。在我的应用程序中的其他地方,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
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;
}