2017-05-05 113 views
0

我一直試圖在Redux中替換整個狀態對象,但是我無法讓它工作。如何更換Redux狀態?

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

    default: 
     return state; 
    } 
} 

export default loadState; 

state是一個對象,action.state是我希望新狀態等於的對象。

我在做什麼錯?

感謝您的幫助球員。

+0

這是您唯一的減速機嗎?在這個簡化器中對狀態的任何改變只會對狀態樹的一部分產生影響。 –

+0

你確定調度的動作有一種'LOAD_STATE'? – AntonNiklasson

+1

你使用'combineReducers'嗎? –

回答

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開發工具中奇怪的原因是,我可以看到以前的狀態,差異,但新狀態仍然像舊狀態。 我真的不明白。即使我在reducer中的console.log狀態和action.state,這些都是正確的! –

+0

那麼你說的是,你嘗試了我的解決方案,但你不能在你的狀態「新國家」?你確定你的動作類型是正確的嗎?嘗試控制檯記錄switch語句 –

+0

我想你的代碼中,我也得到了相同的結果:新狀態相當於以前的狀態。 我的動作類型,絕對是一個對象,我可以看到正確的數據時,我的控制檯日誌的操作。順便說一句,這個目標是重新加載一個新的狀態。我使用這個讓人們「打開文件」,該文件是基本的數據Redux的需求JSON。 –