2017-04-15 4 views
0

http://redux.js.org/docs/api/createStore.htmlredux, 버전 미리로드 됨 상태?

[preloadedState (임의의) 초기 상태. 유니버설 응용 프로그램에서 서버의 상태를 수화 시키려면 을 지정하거나 이전에 직렬화 된 사용자 세션을 복원하려면 으로 지정할 수도 있습니다.

preloadedState 매개 변수를 사용하여 성공적으로 저장소를 초기화 할 수 있습니다.

그러나 상태의 구조를 변경해야하는 경우가 있습니다.

는 예를 들어, 나는 처음에
{ 
    totalCount: 3, 
    usedCount: 1 
} 

가 지금은 이제 유효하지 않습니다 첫 번째 구조

{ 
    totalCount: 3, 
    unusedCount: 2 
} 

그런 다음 저장 상태로 변경하고자했다.
적어도 이전 상태를 삭제하고 새로운 initialState에서 새로 시작하고 싶습니다.

서버에 상태를 저장하고이를 preloadedState 매개 변수로 사용하고 있습니다.
상태 구조가 변경되면 서버 저장 상태를 삭제할 수 있습니까?

답변

0

내 솔루션을 공유하고 있습니다. HOC 감속기 (http://redux.js.org/docs/recipes/reducers/ReusingReducerLogic.html)

export function versionedReducer(reducerFunction) { 

    return (state, action) => { 

    const isInitializationCall = state === undefined 

    if (isInitializationCall) { 
     return state 
    } 

    const { version } = reducerFunction(undefined, {type: undefined}) 
    if (!version) { 
     throw "should versioned" 
    } 
    const shouldAcceptPreloadedState = state.version && state.version >= version 

    if (!shouldAcceptPreloadedState) { 
     state = undefined 
    } 

    return reducerFunction(state, action) 

    } 
}