2017-11-18 2 views
1

내 타겟은 매핑 된 배열 요소를 redux 객체에 추가하는 것입니다. 예 : 학생 JSON의 목록 돌아 오는에Redux가 상태 객체를 조작합니다.

[ 
    {id: "1", name: "Anie"}, 
    {id: "2", name: "John"} 
] 

나는이 :

[ 
    {someprop: "", student: {id: "1", name: "Anie"}}, 
    {someprop: "", student: {id: "2", name: "John"}} 
] 

나는 소품으로 사용자 개체를 추가해야합니다

const initialState = { 
    students: [] 
} 
const students = (state = initialState, action) => { 
    switch (action.type) { 
    case 'ALL_STUDENTS': 
     return Object.assign({}, state, { 
     students: action.students 
     }) 
    } 
} 

내 목표는 그 같이 할 데이터입니다 Object의 person 객체 할당. 어떻게 가능합니까? 가장 올바른 방법은 무엇입니까?

+0

const initialState = { students: [] } const students = (state = initialState, action) => { switch (action.type) { case 'ALL_STUDENTS': return { ...state, students: [...action.payload.map(student => { return {someprop: '', student} })] } default: return state; } } var newStudents = { type: 'ALL_STUDENTS', payload: [{id: "1", name: "Anie"},{id: "2", name: "John"}] } let state = students(undefined, newStudents); console.log(state)

현재 당신은 학생들을위한 하나의 감속기가 있습니다. 당신은 사람을위한 다른 감속기를 원하니? – AranS

+0

필요없는 사람 배열. 학생 배열을 변경해야합니다. – TeodorKolev

+0

학생 인 경우 학생 개체에 'student' 속성이 필요하지 않습니다. 나는 당신이 당신의 데이터 세트를 지나치게 복잡하게 만들고 있다고 생각합니다. – Andy

답변

3

전달 된 학생 목록에서 map() 메서드를 사용하여 각 객체에 새 속성을 추가 한 다음 object 및 array의 spread 구문을 사용하여 새 속성을 추가 할 수 있습니다.

+0

왜 초기 상태로'[]'를 사용하지 않겠는가? 그러나 이미 배열에 학생이 있다면'... state.students'를 전파해야한다. 이 https://jsfiddle.net/Lg0wyt9u/2497/ –

+0

에 오류가 있습니다 ... 상태, – TeodorKolev

+0

Nenad 여기가 json에서 가져 오는 위치이기 때문에 Nenad가 있습니다. – TeodorKolev

관련 문제