老师,你好,为什么我首页专题区域布局这里面获取immutable列表对象时使用get方法和map方法页面报错,提示是undefined

来源:8-3 首页专题区域布局及reducer的设计

慕哥6382148

2020-07-12

TypeError: Cannot read property ‘map’ of undefined
Topic.render
C:/Users/18305/Desktop/react学习代码/book-app/src/pages/home/components/Topic.js:9
6 | render(){
7 | const {list} = this.props;
8 | return (

9 |
| ^ 10 | {
11 | list.map((item) => {
12 | return (

我的代码如下:
class Topic extends Component{
render(){
const {list} = this.props;
return (

{
list.map((item) => {
return (
<TopicItem key={item.get(‘id’)}>
<img className=‘topic-pic’ src={item.get(‘imgUrl’)}/>
{item.get(‘title’)}

)

                })
            }
        </TopicWrapper>
    )
}

}

const mapStateToProps = (state) => ({
list: state.getIn([‘home’,‘topicList’])
});

写回答

2回答

Dell

2020-07-12

首先打印下list看一下内容是什么

0
2
慕哥6382148
class Topic extends Component{ render(){ const {list} = this.props; console.log(list); 在这里打印的 } 这里依然引入了 const mapStateToProps = (state) => ({ list: state.getIn(['home','topicList']) }); 这里是reducer.js里面的代码: import {fromJS} from 'immutable'; const oldState = fromJS({ topicList:[{ id:1, imgUrl:'https://upload.jianshu.io/admin_banners/web_images/4989/7aee9b231d11e9ba92248e65e8f407343f87376e.png?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540', title:'社会热点' }, { id:2, imgUrl:'https://upload.jianshu.io/admin_banners/web_images/4989/7aee9b231d11e9ba92248e65e8f407343f87376e.png?imageMogr2/auto-orient/strip|imageView2/1/w/1250/h/540', title:'绘画' } ] }); export default (state = oldState, action)=>{ switch(action.type) { default: return state } }
2020-07-12
共2条回复

慕哥6382148

提问者

2020-07-14

发现拿不到list里面数据的原因是:我的topicList数据不在home的下面,而是在topic的下面。

所以将mapState里面的代码改为:list: state.getIn(['topic','topicList']) 就可以正常显示了。

//img.mukewang.com/szimg/5f0d5a13098a188904330152.jpg

0
0

React零基础入门到实战,完成企业级项目简书网站开发

主流新技术 React-redux,React-router4,贯穿基础语法

5275 学习 · 2496 问题

查看课程