如何删除aray对象中的一个项目并在此之后更新状态?

时间:2017-10-13 14:07:19

标签: reactjs

我有一个州"比尔"我想删除" Product"中的一个项目使用" ProductID"。那我怎么能这样做呢?

Bill = {
  "Bill_ID" : "a00231",
  "Products" : [
    {
      "ProductID" : "P0203",
      "ProductName" : "ABCD"
    },
    {
      "ProductID" : "P023243",
      "ProductName" : "ZYZ"
    }
  ]
}

如何在删除产品项后更新状态?

2 个答案:

答案 0 :(得分:0)

我认为您可以使用pop()方法。您可以弹出products数组中的最后一个元素并查看弹出元素。类似的东西:

var poppedElement = Bill.Products.pop();
console.log(Bill)              //Bill withoug last Products element
console.log(poppedElement)     //just the last element of Products

不确定这是否会完全脱离我的头脑,但希望至少会给你一个起点:)

点击此链接了解更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop

让我知道它是怎么回事!

答案 1 :(得分:0)

您可以在bill.products数组上使用filter,如下所示(请注意,!=不是==

bill.products.filter(x => x != yourDesiredToBeDeletedId)
  

将this.state视为不可变

由于您的state包含对象中的数组,我建议使用lodash's cloneDeep

let newBill = _.cloneDeep(this.bill);
newBill.products = newBill.products.filter(x => x != yourDesiredToBeDeletedId);
this.setState(bill: newBill);