Как перерисовать / обновить таблицу в ответе js после операций CRUD? - PullRequest
0 голосов
/ 18 мая 2018

Я использовал простую таблицу (код добавлен ниже) и пытался найти много ссылок, но не смог найти подходящее решение для моей проблемы.Таблица отображается нормально, но проблема начинается, когда какие-либо данные добавляются, обновляются или удаляются.Это не отражается, если страница не обновляется.Несколько способов, которые я попробовал, это обновить состояние, но это не помогает.Я даже попытался обновить компонент принудительно, но тщетно.Я даже пытался отрисовать компонент.

<div className="table">
  <table className="table table-striped table-padding">
    <thead>
      <tr className="heading">
        <th className="col-md-2">Image</th>
        <th className="col-md-3">Office Name</th>
        <th className="col-md-5">Address</th>
        <th className="col-md-1"></th>
        <th className="col-md-1"></th>
      </tr>
    </thead>
    <tbody>
      {
        (this.state.dataUpdated) &&
          this.state.data.map((list, index) => {
            return (
              <tr key={index}>
                <td><img style={{height: '30px', width: '30px'}} src={list.imageData} alt="icon"/></td>
                <td>{list.name}</td>
                <td>{list.address}</td>
                <td><button type="button" onClick={(e) => this.handleEdit(list.officeId)}><i className="fa fa-pencil" aria-hidden="true"></i></button></td>
                <td><button type="button" onClick={(e) => this.handleDelete(list.officeId)}><i className="fa fa-trash" aria-hidden="true"></i></button></td>
              </tr>
            )

          })
        }
      </tbody>
   </table>
</div>

handleEdit(id) {
  this.state.data.map(row => {
    if(row.officeId === id) {
      return (
        this.setState({ displayData: row })
      )
    }
  });
  this.displayOfficeList();
}

handleDelete(id) {
  const { dispatch } = this.props;
  dispatch(commonActions.deleteOffice(id));
  this.displayOfficeList();
}

displayOfficeList() {
  this.toggleFlag();
  commonServices.getOfficeList().then((res) => {
    let demo = res;
    this.setState({ data: demo.content});
    this.setState({ dataUpdated: true});
  });
}

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

работал нормально.Ошибка при вызове API для отображения списка до ответа добавления / обновления или удаления записи.Суть в том, что если состояние обновляется, компонент перерисовывается сам.Нужно просто позаботиться и не связываться с вызовами API, как я.

0 голосов
/ 18 мая 2018

Вам необходимо обновлять состояние данных каждый раз, когда вы выполняете какие-либо действия, такие как добавление, редактирование и удаление.

Используйте componentWillReceiveProps, используйте ссылку ниже в качестве ссылки

React не перезагружает данные компонентов при изменении параметров маршрута

официальную документацию можно найти здесь https://reactjs.org/docs/state-and-lifecycle.html

, а также https://hackernoon.com/reactjs-component-lifecycle-methods-a-deep-dive-38275d9d13c0

...