Обновить таблицу реакций на событие - PullRequest
0 голосов
/ 07 мая 2018

Я использую React в качестве инструмента для отображения моих данных вместе с таблицей реакций framework для отображения моих данных.

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

Мой вопрос, как повторно использовать функцию для загрузки данных? ( исходный код )

class ElementCRDN extends React.Component {
    constructor(props) {
        super(props);
        this.handleCreation = this.handleCreation.bind(this);
        this.handleInput = this.handleInput.bind(this);
        this.state = {
            data: [], // the data retrieved from the server
            pages: -1,
       };
   }

   handleCreation(event) {
        Axios.post('/createElement', {
            // data
        }).then(() => {
            // Ask for reload
       });
       event.preventDefault();
   }

   render() {
       <form onSubmit={this.handleCreation}>
           // input to create object
       </form>
       <ReactTable
          data={this.state.data}
          pages={this.state.pages}
          loading={this.state.loading}
          manual
          columns={columns}
          onFetchData={(state) => { // function to retrieve the data
              this.setState({ loading: true });
              Axios.post('/listElements', {
                  page: state.page,
                  pageSize: state.pageSize,
                  sorted: state.sorted,
                  filtered: state.filtered,
              }).then((res) => {
                  this.setState({
                  data: res.data,
                  loading: false,
                  });
              });
          }}
       />
   }

Спасибо, что прочитали

1 Ответ

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

Я бы просто добавил элемент к вашим данным после успешного создания. Вы можете снова использовать this.setState с новым значением данных, которое вы публиковали с createElement.

async handleCreation(event) {
  this.setState({ loading: true });
  await Axios.post('/createElement', data);
  this.setState({ data: this.state.data.concat(data), loading: false });
}
...