2016-06-27 2 views
1

내 감속기돌아 오는 및 Immutable.js - JSON

var initialState = Map({ 
status: true 
}); 
function user(state = initialState, action) { 
switch (action.type) { 
    case GET_PROFILE: 
    return state.set(fromJS(action.response)) 
    } 
    }) 

API의 설정 상태를 반환 JSON ->action.response

{ 

    "id": 11, 
    "profileImage": "http://www.surfertoday.com/images/stories/addictivesurfing.jpg" 

} 

문제는 :fromJS 대신에, 새로운 Map 객체를 설정합니다 기존 Map에 데이터를 추가합니다. 나는 작동하지 않는 return state.set(Array(fromJS(action.response)))과 같은 것을 시도했다.


어떻게 해결할 수 있습니까? 아니면 Immutable.js를 사용하지 않아야합니까?

+0

사용을 얻을 것이다 대신'set'의 merge' – user6227254

답변

1

기술적으로는 새로운 맵을 반환하기를 원합니다. redux/immutable 포인트는 기존 객체를 변경하는 것이 아니라 변경된 상태의 새 객체를 반환한다는 것입니다.

내가 왜 당신이 뭘 하려는지 확실하지 않아서 이것이 왜 효과가 없는지 말하기가 어렵습니다. 나는 "GET_PROFILE"사건을 좀 더 구체적으로 바꿀 수있을 것이라고 생각한다.

이 예는 완벽하지 않지만 몇 가지 통찰력을 제공 할 수 있습니다 : 당신이 더 많은 정보를 게시하거나 좀 더 통찰력을 제공 할 수 있습니다 더 많은 코드를 추가하는 경우 https://github.com/rogic89/ToDo-react-redux-immutable/blob/master/src/reducers/todos.js

합니다.

0

일종의 요청에서 검색된 새 값으로 상태를 업데이트하려하고 있습니다.

귀하는 새로운 값으로 상점을 갱신하지 않는 감속기에 조치를 작성했습니다.

Immutable.js Map/set 함수에는 두 개의 매개 변수 key와 key 만 제공하는 값이 필요합니다.

Immutable.js Map/merge 대신 병합을 사용하고 저장소의 상태와 응답 데이터를 결합하십시오.

var initialState = Map({ 
    status: true 
}); 

function user(state = initialState, action) { 
    switch (action.type) { 
    case GET_PROFILE: 
    return state.merge(fromJS(action.response)) 
    } 
}) 

당신은`

{ 
    status: true, 
    id: 11, 
    profileImage: "http://www.surfertoday.com/images/stories/addictivesurfing.jpg" 
}