在React / Redux中,如何在JSON API结构之后发布数据

时间:2017-09-11 18:49:43

标签: javascript reactjs redux react-redux redux-thunk

我在React中创建了一个表单,我有一个具有JSON API结构的API,即在data: []属性中有响应。我正在使用Axiosredux-thunk来获取数据。

来自state形式的数据具有以下结构:

{
  title: '',
  phone: '',
  email: '',
  description: ''
}

如何转换它,使其遵循JSON API约定,使用axiosredux-thunkactionreducer

{
  data: [{
    title: '',
    phone: '',
    email: '',
    description: ''
  }]
}

这就是我被困住的地方:

减速

export default function roleReducer(state = [], action) {
  switch(action.type) {
    case types.SAVE_ROLE_SUCCESS:
      return [
        ...state,
        Object.assign({}, action.role)
      ];

    default:
      return state;
  }
}

操作

export function saveRoleSuccess(role) {
  return {
    type: types.SAVE_ROLE_SUCCESS,
    role,
  };
}

export function saveRole(role) {
  return (dispatch, getState) => {
    return axios.post(apiUrl, role)
      .then(savedRole => {
        console.log('Role: ', savedRole);
        dispatch(saveRoleSuccess(savedRole));
        console.log('Get state: ', getState());
      })
      .catch(error => {
        if (error) {
          console.log('Oops! Role not saved.', error);
        }
      });
  };
}

我不确定将新数据格式化为JSON API结构的位置和操作。

1 个答案:

答案 0 :(得分:2)

不是100%肯定,但我想在这里:

return axios.post( apiUrl )

您实际上并未发送任何数据。我想你想做:

const dataToPost = { data: [ role ] }; //wrap the role in an array and an object
return axios.post( apiUrl, dataToPost ); //send the data