我想将ImmutableJS合并到我的React应用程序中。所以现在我的减速器看起来像这样:
import { Map } from 'immutable'
const initialState = Map({
data: [],
sections: []
});
const AppState = (state = initialState, action) => {
switch (action.type) {
case 'ADD_CONTENT':
return state.set('data', action.response);
case 'ADD_SECTION':
return state.set('sections', [ ...state.get('sections'), action.payload ]);
default:
return state;
}
};
export default AppState;
一切都很好。但是在我的组件中,我有
mapStateToProps
:const mapStateToProps = (state) => {
const d = state.app.get('data');
return {
works: d.works,
pages: d.pages,
sections: state.app.get('sections')
}
};
然后我要显示数据:
{
this.props.works.map(d => {
return <div>d</div>
})
}
我正在
TypeError:this.props.works.map不是函数
相反,当我
console.log
时,我得到的是this.props.works
是不确定的。我能做什么? 最佳答案
由于您使用的是不可变的JS
在您的mapStateToProps
const mapStateToProps = (state) => {
const d = state.app.get('data');
return {
works: d.works,
...
要从
d
访问数据,请将访问数据的方式从d.works
更改为d.get('works')
return {
works: d.get('works'),
pages: d.get('pages'),
sections: state.app.get('sections')
}