2017-11-08 8 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ファイルですブラウザのリロード後、私は欲しいだけですcompanies: [{obj1}, {obj2}, ...]アレイがプリロードされ、残りの状態がデフォルト値にリセットされる。 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'から 'companies'配列だけを返すことができます。 –

+0

はい、私が探していたものです。ありがとう! :) 他のパラメータは例示的なものです。それらはフラグとして機能し、フィルタリングを行う。 –

関連する問題