亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

反應從對象數組中刪除項目

反應從對象數組中刪除項目

弒天下 2023-04-20 16:21:09
我在本地存儲中有一個購物車項目const cart = [  {_id: 'abcd1234', productName: 'product1', price: '100'},  {_id: 'abcd12345', productName: 'product2', price: '200'},  {_id: 'abcd123456', productName: 'product3', price: '150'},  {_id: 'abcd1234567', productName: 'product4', price: '175'},];并將其映射以顯示購物車項目,并使用按鈕刪除項目<Container>      <div>      {        cart.map(item => (        <p>item.productName</p>        <p>item.price</p>        <i class="fas fa-trash-alt mr-1" style={{ color: '#ff6b6b' }} onClick={removeProduct}></i>))      }      </div></Container>這是我要刪除的功能  const removeProduct = () => {    const cart = JSON.parse(localStorage.getItem("cartProduct"));    let indexToRemove = 1;    cart.splice(indexToRemove, 1)    localStorage.setItem("cartProduct", JSON.stringify(cart));    window.location.reload(); };每次我嘗試刪除一個產品2、產品3或產品4時,刪除的是之前的產品。比如我要去掉product4,那么去掉的就是product3。當只剩一件商品時,根本無法刪除。你可以幫幫我嗎?謝謝
查看完整描述

2 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您需要將當前項目的索引發送給removeProduct函數,以便它知道要刪除哪個項目。


<Container>

  <div>

    {

      cart.map((item, index) => ({

        <p>item.productName</p>

        <p>item.price</p>

        <i class="fas fa-trash-alt mr-1" style={{ color: '#ff6b6b' }} onClick={() => this.removeProduct(index)}></i>

      ))

    }

  </div>

</Container>

而在removeProduct功能上,你必須刪除該index位置的項目。


const removeProduct = (indexToRemove) => {

    const cart = JSON.parse(localStorage.getItem("cartProduct"));

    cart.splice(indexToRemove, 1)

    localStorage.setItem("cartProduct", JSON.stringify(cart));

    window.location.reload();

};


查看完整回答
反對 回復 2023-04-20
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

更改 removeproduct 代碼如下。并將 product-id 作為參數傳遞給函數。


const removeProduct = (productId) => {

    let cart = JSON.parse(localStorage.getItem("cartProduct"));

    cart = cart.filter(productData => productData._id !== productId)

    localStorage.setItem("cartProduct", JSON.stringify(cart));

    window.location.reload();

 };

有關filter方法的更多詳細信息,請參閱 MDN 文檔。


如下更改您的組件以將 id 參數傳遞給函數。


<Container>

      <div>

      {

        cart.map(item => (

         <p>item.productName</p>

         <p>item.price</p>

         <i

          class="fas fa-trash-alt mr-1"

          style={{ color: '#ff6b6b' }}

          onClick={() => removeProduct(item._id)}

         ></i>

        ))

      }

      </div>

</Container>


查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號