class Home extends Component{ componentDidMount(){ this.props.getCustomer() } render(){ const {total, list} = this.props.customer console.log("total:"+total) console.log("list:"+list) return( <div> <NavBar>客户管理系统</NavBar> {list.map((item,index)=>( <List key={index}> <Item arrow="horizontal" thumb="https://zos.alipayobjects.com/rmsportal/dNuvNrtqUztHCwM.png" multipleLine onClick={() => {}} > 客户名称:{item.name} <Brief>级别:{item.level}</Brief> </Item> </List> ) ) }
</div>
)
报错:Cannot read property 'map' of undefine
原因:调用map的对象是 undefined,初始化第一次渲染的时候异步数据返回之前list是undefined。
解决方法:对list作判断,异步ajax返回数据list取到值后再渲染组件。
修改如下:
{list && list.map((item,index)=>( <List key={index}> <Item arrow="horizontal" thumb="https://zos.alipayobjects.com/rmsportal/dNuvNrtqUztHCwM.png" multipleLine onClick={() => {}} > 客户名称:{item.name} <Brief>级别:{item.level}</Brief> </Item> </List> ) ) }