我遇到问题,在使用axios post方法时,我没有在action.payload.data中获取数据。
在注册页面上,我在提交表单
时触发了操作++x : x is now 2
++x + : 2 +
++x + x : 2 + 2
++x + x++ : 2 + 2 and x is now 3
++x + x++ * : 2 + 2 *
++x + x++ * x : 2 + 2 * 3
在动作档案中
onSubmit(props) {
this.props.signUpUser(props)
.then(() => {
this.context.router.push('/');
});
}
当我在console.log中显示它显示的道具时
export function signUpUser(props) {
console.log("props", props);
const request = axios({
url: 'http://localhost:3000/api/users',
method: 'post',
data: props
})
但是当我在控制台上将其记录在减速机上时。 我获取了object.config.adapter中的数据而不是object.data。
props Object {username: "11", email: "1", password: "1", passwordConfirmation: "1"}
我可以看到,当我检查我的数据库时,数据很好,但是当我调用payload.data时,我不确定为什么我得到空数组。我的目标是将注册用户的信息存储到reducer中,以便在注册后显示他们的信息。
答案 0 :(得分:1)
您确定您的API正在返回任何数据吗?在我看来,您的代码正在按预期工作,但您的API并未返回任何数据。我不认为这是一个反应/减少问题。
您所指的data
个对象,
{username: "11", email: "1", password: "1", passwordConfirmation: "1"}
是API中的帖子正文中的数据。
您应该查看一下您的API /用户控制器,看看为什么它没有在响应中返回数据。
答案 1 :(得分:0)
你在哪里派遣行动?
改变你的承诺
.then((data) => {
dispatch({type:'SIGN_UP_USER', payload:data})//you have to pass dispatch to the function call
this.context.router.push('/');
});
}
您必须将其设置为属性值。
尝试
return Object.assign(state, {data:action.payload.data})
或使用es6语法
return { ...state, data:action.payload.data }