You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React函数组件列表不显示问题:是否需改用类组件?

问题解决:函数组件渲染列表不显示的问题

嘿,不用换成类组件啦!你的ListSeances函数组件完全能正常工作,问题出在数组map的写法上,和组件类型没关系~

问题根源

你在list.map里的箭头函数用了大括号{}包裹代码,但没有显式返回<li>元素:

const listItems = list.map((item) =>{ <li>{ item }</li> });

箭头函数如果用大括号定义代码块,必须手动写return才能返回值,否则默认返回undefined,所以listItems数组里全是undefined,自然渲染不出列表。

两种修复方式

方式1:用小括号实现隐式返回(推荐)

去掉大括号,改用小括号包裹JSX,箭头函数会自动返回括号里的内容:

const listItems = list.map((item) => <li>{ item }</li>);
// 或者加上括号更清晰:
// const listItems = list.map((item) => (<li>{ item }</li>));

方式2:显式添加return

如果需要在map里写更多逻辑(比如条件判断),可以保留大括号,然后手动返回元素:

const listItems = list.map((item) =>{ 
  return <li>{ item }</li>; 
});

修复后的完整List.js代码

import React, { Component } from 'react';
import { withStyles } from 'material-ui/styles';
const styles = {
 root: {
 display: 'flex',
 backgroundColor: "whitesmoke",
 width: '100%',
 },
}
function ListSeances(props) {
 const { classes } = props;
 const list = [1,2,3,4,5,6];
 // 这里修复了map的返回问题
 const listItems = list.map((item) => <li>{ item }</li>);
 return (
 <div className={classes.root}>
 <ul>{ listItems }</ul>
 </div>
 )
}
export default withStyles (styles)(ListSeances);

额外提示

函数组件和类组件在渲染列表这类场景下没有本质区别,只要逻辑正确都能正常工作,你完全不需要把ListSeances改成类组件~

内容的提问来源于stack exchange,提问作者user9544554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:29:33