2017-11-08 6 views
0

Redux를 사용하여 localStorage에 저장하는 방법은 특정 상태 일뿐입니다?RedStay를 사용하는 localStorage에서 특정 상태의 조각 만 저장

예를 들어, 만회로 정의 목록에서 내 상태는 다음과 같습니다

const rootReducer = combineReducers({ 
    list: listReducer, 
    form: formReducer 
}) 

localStorage.js :

export const loadState =() => { 
    try { 
    const serializedState = localStorage.getItem('state') 
    if (serializedState === null) { 
     return undefined; 
    } 
    return JSON.parse(serializedState) 
    } catch (err) { 
    return undefined 
    } 
} 

export const saveState = (state) => { 
    try { 
    const serializedState = JSON.stringify(state) 
    localStorage.setItem('state', serializedState) 
    } catch (err) { 
    // to define 
    } 
} 

state = { 
    companies: [], 
    currentDisplay: '', 
    recordNotFound: false, 
    } 

이 내 combineReducer 파일입니다 그리고 브라우저를 다시로드 한 후 나는 단지만 원한다. 10 어레이가 미리로드되고 나머지는 상태로 리셋된다. currentDisplay: ''은 ''와 동일해야합니다.

오른쪽 지금이 작업 코드에 대한 책임은 다음과 같습니다

store.subscribe(() => { 
    saveState({ 
    list: store.getState().list 
    }) 
}) 

을 그리고 내가 setState를()를 사용하여 반작용에 내가 쉽게 이러한 매개 변수를 재설정 할 수있는 것 같아요 ... 분명 전체 목록을 저장하지만 것 이것을 제대로하고 싶습니다.

답변

0

다른 매개 변수를로드 할 필요가없는 경우 companies 매개 변수를 localStorage에 저장할 수 있습니다.

store.subscribe(() => { 
    saveState({ 
    companies: store.getState().list.companies 
    }) 
}) 
+0

불행히도 그렇게 쉽지 않습니다. 나는 이것을 전에 시도하고 있었다. 이 경우 브라우저를 다시로드 한 후 내 초기 상태는 다음과 같습니다 '목록 : [{...}, {...}]' 나는이 같은 구조를 가지고 싶다 : '목록 : { 회사 : [{...}, {...}], nextParam : '', nextParamm : ''} –

+0

다른 매개 변수를 사용할 필요가 없다면 그 이유를 알지 못했습니다. 하지만'return JSON.parse (serializedState) .companies'를 사용하여 원하는 경우 'loadState'에서'회사 '배열 만 반환 할 수 있습니다. –

+0

예, 정확히 찾고자했던 것입니다. 정말 고마워! :) 다른 매개 변수는 모범적입니다. 플래그 및 필터로서 수행합니다. –