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

React动态生成Grid布局Div不显示问题求助(含gridArea内联样式实现代码)

嘿,我一眼就发现问题所在啦!你在JSX里用了forEach来生成任务槽的div元素,但forEach本身是没有返回值的(它只会遍历数组执行回调,最终返回undefined),所以React根本没拿到要渲染的元素列表,自然看不到任何黑色背景的div~

解决步骤:

  1. 把forEach换成map
    map方法会遍历数组并返回一个新的元素数组,这正是React渲染列表所需要的。

  2. 去掉多余的index++操作
    map的第二个参数本身就是当前元素的索引值,而且是从0开始的,直接用它来计算gridArea就好,手动修改索引反而容易出问题。

  3. 修正gridArea的语法
    JSX的style是JavaScript对象,属性值不需要加CSS里的分号,我帮你去掉了多余的分号。

修改后的业务组件代码:

export const DayColumn = ({ day }) => {
  const { timeColumn } = useTableContext();
  return (
    <Wrapper gridInterval={timeColumn.length}>
      <h2>{day}</h2>
      {/* 用map替代forEach,直接使用索引计算gridArea */}
      {timeColumn.map((_, index) => (
        <div 
          key={index} 
          className='task-slot' 
          style={{ gridArea: `${index + 1} / 1 / ${index + 2} / 2` }} 
        >
          <h1>text</h1>
          <BsPlusSquareFill />
        </div>
      ))}
    </Wrapper>
  );
};

额外小建议:

如果timeColumn可能为空数组,可以用可选链操作符来避免报错:timeColumn?.map(...),这样当timeColumn是undefined或者null时,不会执行map方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:07:40