2016-06-11 12 views
5

これはまだreduxについての別の初心者質問です。私のアプリでは、テキストファイルからステートオブジェクトをロードすることができます。すなわち、ステートオブジェクト全体を完全に再初期化できるようにしたいと考えています。だから私はリセットstateを初期値にリセットしたくないのですが、は新しいものでを置き換えます。 (このアプリケーションは、ブラウザのローカルストレージにデータを格納するだけで、これまでのところ私はhttp://redux.js.org/docs/introduction/index.htmlからの素晴らしいチュートリアルに従っています)私はいくつかのアプローチを試みましたが、どれも結果を得ていませんでした。例えば、私のreducers/index.jsに私が持っている:reducers/global.jsreduxで状態全体を上書きする

export default function App (state = {}, action) { 
    return { 
    todos: todos(state.todos, action), 
    ... 
    global: global(state, action) 
    } 
} 

は私が持っている:

const global = (state = {}, action) => { 
    switch(action.type) { 
    case 'LOAD_DB_FROM_FILE': 
     return action.fileContents; 
    default: 
     return state 
    } 
} 

何が起こることはstateオブジェクトは、奇妙な(またはしない:))十分には、と呼ばれる新しいフィールドを取得するということです元の状態(やないファイルからの読み込み1)を含み、それはさえレベルのカップルのためにネストますglobal(私はstate.global.global.stateのレプリカを持っている)

私は、このアプローチのハック感を認識しています。私の設定で根本的な欠陥(私の無知のため)を受け入れることさえしても、私の問題に対する簡単で曖昧な答えはまだ見つかりませんでした。

いつもどんな助けでも大歓迎です。

答えて

4

私はReduxのについて少し知っているが、私にはJavaScriptについて知っていることに基づいて、私はあなたがこのような何か必要だと思います。だから、globalという名前の減速が一度に全体の状態オブジェクトを交換する機会を持っている

// reducers/index.js 

export default function App (state = {}, action) { 
    state = global(state, action); 
    return { 
    todos: todos(state.todos, action), 
    ... 
    }; 
} 

を。

+0

@DimitarRoszenovRuszevあなたは大歓迎です:) –

関連する問題