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

React中map遍历渲染组件页面无内容显示问题排查

问题诱因

React的JSX语法有明确的组件解析规则:所有自定义组件必须以大写英文字母开头,小写开头的标签会被直接判定为原生HTML DOM标签。
你的代码中将按键组件定义为小写开头的box,在render方法里写<box text={key} />时,React不会调用你写的那个函数组件,只会尝试渲染一个浏览器根本不认识的原生<box>标签,最终自然不会有任何内容显示在页面上。

修复方案
  • 将自定义的按键组件名从小写box改为大写开头的Box,符合React组件命名规范
  • 将map遍历中渲染的组件标签同步替换为大写开头的<Box />

修复后的完整可运行代码如下:

class App extends React.Component {
  state = {
    keys: ["Q", "W", "E", "A", "S", "D", "Z", "X", "C"]
  };
  render() {
    const { keys } = this.state;
    return (
      <div className="inner-container" id="drum-machine">
        <div id="display">
          {keys.map((key, idx) => (
            <Box text={key} key={idx} />
          ))}
        </div>
      </div>
    );
  }
}
const Box = (props) => <div className="box">{props.text}</div>;

ReactDOM.render(<App />, document.getElementById("app"));

补充说明:哪怕组件是写在同一个文件里的局部组件,也必须遵守大写开头的命名规则,这个规则是React在编译JSX阶段就做的判断,和组件作用域没有关系。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:06:25