2017-05-05 8 views
0

私はReduxの状態オブジェクト全体を置き換えようとしていますが、動作させることはできません。Redux状態をどのように置き換えることができますか?

function loadState(state = {}, action) { 
    switch (action.type) { 
     case 'LOAD_STATE': 
      return action.state 

    default: 
     return state; 
    } 
} 

export default loadState; 

状態はオブジェクトであり、action.stateは新しい状態を同じにしたいオブジェクトです。

私は間違っていますか?

あなたの助けを借りてくれてありがとう。

+0

これはあなたの唯一の還元剤ですか?このレデューサーの状態の変更は、状態ツリーの一部にのみ影響します。 –

+0

ディスパッチされたアクションのタイプが 'LOAD_STATE'ですか? – AntonNiklasson

+1

'combinedReducers'を使用していますか? –

答えて

0

あなたのコードは私には正しいように見えますが、「私はそれを動作させることはできません」というのはむしろあいまいです。あなたは何のテストをしているのか指定できますか?あなたがしようとする場合があります

何か:

function reducer(state = {}, action) { 
    switch (action.type) { 
     case 'LOAD_STATE': 
      return {...state, newState:action.state} 
     default: 
      return state; 
    } 
} 

export default reducer; 

あなたが

{JSON.stringify(state.newState)} 

にあなたが通過する状態が正しく到着したかどうかをチェックすることができます。この方法を使用してどこかに自分のアプリで新しい状態を表示することができます。

+0

ありがとう、私はあなたのソリューションを試しましたが、それはまだ状態を変更しません。 Redux開発ツールでは変な原因ですが、私は以前の状態であるdiffを見ることができますが、新しい状態は古い状態のままです。 私は本当にそれを取得していません。私がconsole.logの状態と減速機のaction.stateを使用していても、それらは正しいです! –

+0

あなたは私の解決策を試したことがありますが、あなたの州の "newState"はできないと言っていますか?行動タイプが正しいと確信していますか? switchステートメント内でコンソールログを試してみよう –

+0

私はあなたのコードを試しました。同じ結果が得られます。新しい状態は以前の状態と同じです。 私のアクションタイプは間違いなくオブジェクトであり、コンソールにアクションを記録するときに正しいデータが表示されます。ところで、これは新しい状態全体をリロードすることを目標としています。私は人々が "ファイルを開く"ことができるようにこれを使用しています、そのファイルは基本的にデータの必要性のJSONです。 –

関連する問題