2017-02-15 7 views
0

나는 단지 redux에 대해 소개를 받고 있으며 얼마 동안 상태를 미리로드하는 문제에 얽매여 있습니다.redux에서 combineReducers와 함께 사용하는 프리로드 상태

단일 감속기를 사용하는 경우 다음 코드를 사용하고 있었지만 잘 작동했습니다. 관련 스 니펫 ::

const head = (state = {}, action) => { 
switch (action.type) { 

    case 'TOGGLE_VISIBLITY': 
    if (state.head.content !== action.id) { 
     return state 
    } 
    state.body.visible = !state.body.visible; 
    return state; 

    default: 
     return state 
    } 
} 

const heads = (state = [], action) => { 
    switch (action.type) { 
     case 'TOGGLE_VISIBLITY': 
    state.body = state.body.map(t => 
    head(t, action) 
); 
} 
return state; 
} 

export const store = createStore(heads, config); 

대신이 항목을 combinerReducers로 변경했으며 JS 오류를 발생 시켰습니다.

예기치 않은 키 "head", "body"가 createStore에 전달 된 preloadedState 인수에 있습니다. 대신에 알려진 감속기 키 중 하나를 찾을 것으로 예상됩니다 : "머리". 예기치 않은 키는 무시됩니다.

내 변화는 here를 방문하시기 바랍니다 경우

const plannerApp = combineReducers({ 
    heads 
}); 

export const store = createStore(plannerApp, config); 

하면 전체 코드를 확인하고 싶어 ::했다.

도움이 매우 좋습니다. 미리 감사 드리며 ... 시간과 노력에 감사드립니다 ...

답변

3

요약하면 미리로드 된 상태는 감속기의 구조와 일치해야합니다. combineReducers을 사용하여 전환 했으므로 상태 트리 구조가 변경되었습니다. 이제 body의 아이 키가 heads의 최고 수준의 키를 가지고, 그래서 당신은 아마 같이하기 위해 config를 업데이트해야합니다

export default { 
    heads: { 
    body: { 
     ... 

지금 바와 같이, config 객체가 포함 head의 최상위 키 및 body, 상태 트리의 최상위 수준에 항목이 없습니다.