将axios发布到reducer时,React获取空数组

时间:2017-03-13 21:24:44

标签: javascript reactjs axios reducers

我遇到问题,在使用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"}

enter image description here

我可以看到,当我检查我的数据库时,数据很好,但是当我调用payload.data时,我不确定为什么我得到空数组。我的目标是将注册用户的信息存储到reducer中,以便在注册后显示他们的信息。

2 个答案:

答案 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 }