2017-07-10 33 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

太棒了,我很高兴我能帮上忙。 –

相关问题