material-table Запретить обновление состояния после добавления строки - PullRequest
0 голосов
/ 17 июня 2020

Используя библиотеку таблиц материалов, я пытаюсь визуализировать другой компонент при добавлении строки. Приведенный ниже код работает по назначению; однако я получаю следующую ошибку в консоли: Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. Есть ли способ заставить таблицу материалов не обновлять состояние после добавления строки?

https://codesandbox.io/s/silly-morse-gy8nu?file= / src / App. js

import React from "react";
import MaterialTable from "material-table";

export default function App() {
  const [displayTable, setDisplayTable] = React.useState(true);

  if (displayTable) {
    return (
      <MaterialTable
        columns={[
          { title: "Adı", field: "name" },
          { title: "Soyadı", field: "surname" },
          { title: "Doğum Yılı", field: "birthYear", type: "numeric" },
          {
            title: "Doğum Yeri",
            field: "birthCity",
            lookup: { 34: "İstanbul", 63: "Şanlıurfa" }
          }
        ]}
        editable={{
          onRowAdd: newData =>
            new Promise((resolve, reject) => {
              setDisplayTable(false);
              resolve();
            })
        }}
        data={[
          {
            name: "Mehmet",
            surname: "Baran",
            birthYear: 1987,
            birthCity: 63
          }
        ]}
        title="Demo Title"
      />
    );
  } else {
    return <p>Test</p>;
  }
}

1 Ответ

0 голосов
/ 25 июня 2020

Нет, в настоящее время это невозможно.

Но вы можете дождаться, пока таблица установится, и вызвать скрытие компонента чуть позже:

 onRowAdd: newData =>
            new Promise((resolve, reject) => {
              resolve();
              setTimeout(() =>  setDisplayTable(false), 50)
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...