Динамическое удаление элементов из таблицы/списка

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

метод удаления

  deleteRevision = (id) => {
    alert("Are you sure you want to delete {revisionID} ?")
    console.info(id)
    axios.delete("http://localhost:8080/lagbevakning/revision/delete?id = " + id)
  }

Мой метод таблицы

  finishedRevisionsList = () => {
    return(
      <div>
          <Table celled>
              <Table.Header>
                <Table.Row>
                  <Table.HeaderCell>  Status      </Table.HeaderCell>
                  <Table.HeaderCell>  Skapad      </Table.HeaderCell>
                </Table.Row>
              </Table.Header>

          {this.state.data.map((item, i) => (
                <Table.Body key = {item.id}>
                  <Table.Row>
                    <Table.Cell>{item.status}</Table.Cell>
                    <Table.Cell> 
                          <i className = "far fa-trash-alt" onClick = {this.deleteRevision.bind(this, item.id)}></i>
                    </Table.Cell>
                  </Table.Row>
                </Table.Body>
          ))}
          </Table>
      </div>
    )
  }

Оказывать

    render() {
        return (
          <div>
           {this.finishedRevisionsList()}
          </div>
        )
      }

Любые предложения о том, как я могу сделать эту таблицу более динамичной?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
73
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ваш метод deleteRevision просто отправляет запрос DELETE на серверную часть, но не обновляет состояние компонента.

Вы можете отфильтровать товар с указанным id из data.

deleteRevision = id => {
  axios.delete("http://localhost:8080/lagbevakning/revision/delete?id = " + id);

  this.setState(({ data }) => ({
    data: data.filter(item => item.id !== id)
  }));
}

Вы должны изменить свой массив данных в состоянии после удаления.

Вы удаляете элемент из this.state.data, после чего вы должны установить новые данные в состояние (без удаленного элемента)

что-то вроде:

this.setStete((prevState) => {
  data: prevState.data.filter(item => item.id !== id);
);

Другие вопросы по теме