Удалите несколько данных с помощью mapdispatchprops, которые не работают в react

#reactjs #react-redux

Вопрос:

Попробуйте удалить несколько записей с помощью вызова api .

Но он удаляет только первую запись

 deleteData = () => 
   {  
        var deleteArray = this.state.deleteArray;
        for(var i=0;i < deleteArray.length;i  ){
          
            var name = deleteArray[i].name;
            var id = deleteArray[i].id;
            deleteAPICallDispatch(name,id);  
        }   
   }
   
 

Код отправки для api вызовов

 const mapDispatchToProps = (dispatch, ownProps) => {
  return { 
    deleteAPICallDispatch:(name,id) => dispatch(deleteAPICall(name,id)),
  
  };
};
 

приведенный выше код вызывает API только один раз, а не несколько раз

Комментарии:

1. Почему вы отправляете в цикле, вместо того, чтобы сначала создать массив, а затем вызвать диспетчеризацию? Это необходимость или просто предпочтение?

2. да,нужно указать идентификатор ,имя и удалить конкретную запись

3. Ну, я бы позволил своему API удалить несколько, если это вариант использования. В этом случае я бы просто отправил действие с массивом toBeDeleted элементов и отправил массив в серверную часть. Серверная часть выполнит цикл по массиву и удалит элементы.

Ответ №1:

Вы могли бы попробовать следующее:

 deleteData = () => {
  Promise.all(
    this.state.deleteArray.map(({ name, id }) =>
      deleteAPICallDispatch(name, id)
    )
  );
};
 

Вы могли бы зарегистрировать это.состояние.Удалите значение.length, чтобы убедиться, что оно правильное.