我想将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
未定义。我该怎么办?
答案 0 :(得分:2)
因为你正在使用Immutable 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')
}
答案 1 :(得分:0)
您正在调用d.works,但未定义。我认为在你的行动中,当你传递初始状态时,你还需要定义作品
const initialState = Map({
data: [
works: [],
pages: []
],
sections: []
});