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

Javascript使用.map函数实现点击按钮生成带日期div元素失败求助

问题修复方案

核心错误点

  • map() 是仅数组可调用的原生方法,你代码中定义的data是普通对象,直接调用.map()会抛出类型错误,这是代码无法运行的直接原因。
  • 你在事件回调中生成的JSX元素没有存入组件状态,React的渲染逻辑依赖状态驱动,临时生成的JSX不会被自动渲染到页面上。

修复步骤

1. 定义状态存储待渲染数据

首先在组件内定义状态,用来存储需要展示的提交数据,示例用React的useState钩子:

import { useState } from 'react'

// 组件内部顶部定义状态,此处以列表场景为例(支持多次提交新增多条记录)
const [dataList, setDataList] = useState([])

如果只需要展示最新提交的单条数据,不需要历史记录,可以直接定义为单个对象状态:const [showData, setShowData] = useState(null)

2. 修改提交事件逻辑

const handleSubmit = (e) => {
  e.preventDefault();
  // 构造新提交的单条数据
  const newItem = { title: title, desc: desc, date: date };
  // 追加新数据到状态数组,触发组件重渲染
  setDataList(prev => [...prev, newItem])
  // 单条数据场景用这行替换上面的setDataList:setShowData(newItem)
}

3. 组件模板中添加渲染逻辑

在组件的return返回的JSX模板中,遍历状态渲染对应元素:

return (
  <div>
    {/* 你的原有表单、提交按钮等代码 */}

    {/* 列表场景渲染逻辑 */}
    {dataList.map((userinfo, index) => (
      // 注意key属性需要唯一,如有唯一业务字段(比如ID)请替换index
      <div key={index}>
        <h1>{userinfo.title}</h1>
        <p>{userinfo.desc}</p>
        <p>{userinfo.date}</p>
      </div>
    ))}

    {/* 单条数据场景渲染逻辑,替换上面的map部分即可
    {showData && (
      <div>
        <h1>{showData.title}</h1>
        <p>{showData.desc}</p>
        <p>{showData.date}</p>
      </div>
    )}
    */}
  </div>
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 10:36:04