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

React中遍历含嵌套对象的数组问题:map仅返回外层对象

问题修复方案

你的核心问题出在handleAddMoreDetails函数的数组更新逻辑上:当前代码每次点击按钮时,不是往数组里追加新的详情对象,而是把原数组(prevState)当作对象展开后覆盖details字段,最后把这个单一对象塞进新数组,导致每次添加都会覆盖之前的内容,数组永远只有一个元素。

修正后的代码

const [moreDetails, setMoreDetails] = useState([]);
const [details, setDetails] = useState("");

const handleAddMoreDetails = () => {
  // 正确逻辑:将新详情对象追加到原数组末尾
  setMoreDetails((prevState) => [
    ...prevState,
    { details: details }
  ]);
  setDetails("");
};

return (
  <div className="App">
    <input
      type="text"
      value={details}
      onChange={(e) => setDetails(e.target.value)}
    />

    <button onClick={handleAddMoreDetails}>Add Detail</button>

    {moreDetails.map((item, index) => <p key={index}>{item.details}</p>)}
  </div>
);

关键修改说明

  • 把{ ...prevState, details: details }替换为...prevState,用扩展运算符保留原数组的所有元素,再追加新的{ details: details }对象,确保数组能持续累积新增的详情项。
  • 原代码中的moreDetails &&判断可以省略,因为空数组执行map不会报错,无需额外判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:24:25