reactjs Javascript -类型错误:无法赋值给对象“#”的只读属性“id”< Object>

hc8w905p  于 2023-03-01  发布在  React
关注(0)|答案(1)|浏览(184)

我正在循环一个数组并构造一个数组,如下所示。在执行此代码时,我得到一个错误
TypeError:无法分配给对象“#”的只读属性“id”

const finalItems: any = [];
  data.items.forEach((parent: any) => {
    // parent construct
    parent.id = parent.productId;
    parent.level = parent.level;

    // remove other keys in json
    delete parent.links;

    finalItems.push({
      node: parent,
      key: parent.id,
    });
  });
return items;

我尝试更改代码如下,查看stackoverflow中的一个链接,但它给出错误,因为未定义不是函数

data.items.forEach((parent: any) => {
// parent construct
parent.id(parent.productId);
});

有人能就这个问题提出建议吗

inkz8wg9

inkz8wg91#

如果parentreadonly,所以您不能修改它,您需要从它获取副本,如下面代码所示:
//选项1

const finalItems: any = [];
data.items.forEach((parent: any) => {
  // parent construct
  const newParrent = parent;
  newParrent.id = parent.productId;
  newParrent.level = parent.level;

  // remove other keys in json
  delete newParrent.links;

  finalItems.push({
    node: newParrent,
    key: newParrent.id
  });
});

或使用map

//option 2

const finalItems = data.items.map((parent) => {
  const newParrent = parent;
  newParrent.id = parent.productId;
  newParrent.level = parent.level;
  // remove other keys in json
  delete newParrent.links;

  return {
    node: newParrent,
    key: newParrent.id
  };
});

注意:此答案仅供参考,可能不是最终答案

相关问题