簡體   English   中英

如何刪除多個數組項

[英]How can I delete Multiple array items

我正在使用反應 js。 我想添加一個選項來刪除多個項目。 但是在刪除每個項目后,頁面會刷新道具而不是刪除剩余的項目。

如何刪除多個項目?

const onDeleteAll = arr => {
        
    arr.forEach(element => {
      const formData = {
        id:element
      }

      props.onDeleteSubmit(formData, function(){ // pass id to delete func
        console.log('deleted')
      })
    });
  }
  useEffect(() => {
    props.getPriceType(); // fetching data
  }, []);

減速器:

case DELETE_PRICE_TYPE_SUCCESS_ACTION:
          const myDeletedArray = draft.list;
          const objDeletedIndex = myDeletedArray.filter(obj => obj.id !== action.payload._id);
          draft.list = objDeletedIndex; //update data
          break;

 var id = 23; var list = [{ id: 23, value: "JOHN" }, { id: 23, value: "JADE" }, { id: 24, value: "JADE" }, { id: 25, value: "JAMES" }]; var indexes = []; const templist = list.filter((item, ind) => { return item.id;== id }); list = templist. console;log(list);

首先獲取與要刪除的數組中的項目匹配的索引列表。 遍歷上面的列表,並通過拼接操作從每個數組中刪除項目。

我認為問題在於您有多個要刪除的項目,但您一次只能觸發 1 個刪除操作。 您需要收集要在列表中刪除的所有 id,並將該列表發送到操作,並且在 reducer 中只需過濾該 id。

const onDeleteAll = arr => {

  //this just to follow your current shape of things
  //ideally you don't want to do that, just pass arr to the onDeleteSubmit

  const formData = arr.map(element => ({
      id:element
  }));

  props.onDeleteSubmit(formData, function(){
      console.log('deleted')
  })  
  
}
useEffect(() => {
  props.getPriceType(); // fetching data
}, []);

減速器:

case DELETE_PRICE_TYPE_SUCCESS_ACTION:
          const myDeletedArray = draft.list;
          const objDeletedIndex = myDeletedArray.filter(obj => 
            !action.payload.find(itemToDelete=>itemToDelete._id===obj.id)
          );
          draft.list = objDeletedIndex; //update data
          break;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM