2017-07-10 74 views
1

這裏我試圖在組件中顯示源代碼,但總是發現錯誤,因爲state.get不是函數。當試圖映射react-redux狀態時,state.get不是函數

reducer.js

let initialState = Immutable.fromJS({sources: []}); 

export default function (state = initialState, action){ 
    switch(action.type){ 
     case GetSources: 
      return state.merge({ 
       sources: action.sources 
      }); 
     break; 
    } 
    return state; 
} 

Component.js

function mapStateToProps(state){ 
    return{ 
     sources: state.get('sources') 
    } 
} 

allReducers.js

+1

您是否在某處使用'combineReducers'? –

+0

'state'對象是什麼樣的:S? – JonE

+0

我的狀態對象如下所示:Object {sources:Map,news:Object} – Candy

回答

1

請試試這個:

function mapStateToProps(state){ 
    return{ 
     sources: state.sources.get('sources') 
    } 
} 

請注意由下式給出減速管理該州只是整個Redux的狀態的一部分,如果你使用combineReducers。在這種情況下,要訪問由給定的縮減器管理的狀態片,您必須使用註冊了縮減器的鍵名(在您的情況下,它的格式爲sources)。
據終極版combineReducersdocs,減速機返回的combineReducers

調用每一個孩子減速器,他們 結果收集到一個單一的狀態對象。狀態對象 的形狀與傳遞的縮減器的鍵相匹配

+0

非常感謝。這工作... – Candy

+0

太棒了,我很高興我能幫上忙。 –

相關問題