2017-09-11 6 views
0

React에서 양식을 만들었으며 JSON API 구조가있는 API가 있습니다 (즉, data: [] 속성의 응답 포함). 그리고 Axiosredux-thunk을 사용하여 데이터를 가져 왔습니다.React/Redux에서 JSON API 구조를 따라 데이터를 게시하는 방법

{ 
    data: [{ 
    title: '', 
    phone: '', 
    email: '', 
    description: '' 
    }] 
} 
: 그것은 axios, redux-thunk, actionreducer를 사용하여 JSON의 API 규칙을 다음 그래서 그것을 변환 어떻게

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

:

형태 state에서 오는 데이터는이 구조를 가지고

여기가 내가 붙어있어 :

Redu CER :

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 구조.

+0

이 질문은 매우 불분명합니다. 배열에 객체를 배치하는 방법을 묻고 있습니까? '(obj) {return {data : [obj]}}'?? – gravityplanx

+0

@gravityplanx 예, 질문은 어떻게 데이터를 JSON API의'data' 배열에 추가 할 수 있습니까? – Shaoz

+0

"JSON API로부터"를 어떻게 의미합니까? 이전 주석에서 바보 같은 작은 함수는'data : []'속성을 가진 간단한 객체를 생성합니다 ... 당신이 원하는 것은 무엇입니까? – gravityplanx

답변

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 
+0

답장을 보내 주셔서 감사합니다. 'axios.post()'의 두 번째 매개 변수에 데이터를 추가하여 질문을 업데이트했습니다. 귀하의 답변은 데이터를 보낼 때 JSON API 구조를 따릅니다? – Shaoz

+0

나는 그렇게 생각한다 - 시험해 보라! 귀하의 답변에 대해 –

+0

감사합니다. 말된다. 죄송합니다. 나는 확신하지 못했고 axios와 thunk에 익숙하지 않았습니다. 그러나 다시 한번 감사드립니다. – Shaoz