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

更新含嵌套对象数组的state数据:递减指定film的userlikecnt失败

修复React嵌套数组状态更新的问题

你的代码无法正常工作的核心原因是没有返回完整的新状态对象。在setData的回调函数中,你仅对films数组执行了map操作,但未将处理后的数组整合回整个state结构,同时原state中的message等其他属性也需要保留以维持状态的完整性。

修正后的代码如下:

setData(prevState => {
  return {
    ...prevState, // 保留原state的其他属性(如message)
    films: prevState.films.map(film => {
      if (film._id === id) {
        return {
          ...film,
          userlikecnt: film.userlikecnt - 1
        };
      }
      return film;
    })
  };
});

关键说明

  • 使用...prevState展开原状态,确保message等非films字段不会丢失
  • 将map生成的新数组赋值给films字段,替换原数组(遵循React状态不可变原则)
  • 匹配到目标film时,先展开原film对象再修改userlikecnt,避免直接修改原对象导致的状态异常

内容的提问来源于stack exchange,提问作者D. Rattansingh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:12