Mui Data Grid Pro обновляет исходное состояние данных с помощью apiRef.Current.getSelectedRows()

#javascript #reactjs #datagrid #material-ui #state

Вопрос:

 // Method for deleting orders in batches.  function DeleteBulkOrders(selectedRows){  const selectedIDs = new Set(selectedRows);  const selectedRowUpdate = data.filter((row) =gt;  selectedIDs.has(row.id),  )  console.log(selectedRowUpdate)  var deletedData = data.filter(function(id){  return !selectedRowUpdate.includes(id);  });  setData(deletedData);  handleClose();  }  

У меня есть что-то в этом роде для MUI datagrid pro. По сути, когда я выбрал строку с помощью OnSelected, она возвращает мне идентификатор выбранных элементов в массиве. Затем я анализирую и фильтрую этот массив идентификаторов в исходных данных и устанавливаю новые данные.

Это работает, к сожалению, я считаю, что данные, которые я использую, не обновляются при изменении / редактировании ячейки. Он по-прежнему показывает старые значения и не отражает отредактированные. Все это хорошо для метода удаления пакетов, так как я все равно удаляю их, однако он не так хорошо работает для отправки всех, которые должны отражать отредактированные продажи, чтобы отправить полезную нагрузку в API для хранения.

 // Deletes individual items within the row, not selected / bulk item delete.  function DeleteIndividualItem(params){  console.log(params);  const newArray = data  .filter(function(row) {  return row.id !== params.id;  });  setData(newArray);  }  

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

Я предполагаю, что это связано с состоянием и тем, как я не обновляю состояние своих данных при изменении. Это заняло у меня некоторое время, но я нашел этот встроенный метод apiRef.current.getSelectedRows() ^На самом деле он выплевывает сопоставленный массив с обновленными полями, я пытаюсь выяснить, есть ли встроенный метод в базе данных MUI, который обновляет строки, передавая apiRef.current.getSelectedRows().

Я думал о том, чтобы уничтожить карту, а затем использовать setData(api.Ref.current.getSelectedRows()) и т. Д. Тем не менее, я чувствую, что должен быть более чистый способ сделать это.

 var [data, setData] = useState(apiDataArray);  // Rows is the data array that is populated and fed back into the table. var apiDataArray = [...Array(25)].map((_, index) =gt; ({  id: mockData.id(index),  client: mockData.name.fullName(index),  email: mockData.email(index),  lastLogin: mockData.time(index),  performance: mockData.number.percent(index),  status: sample(['Accepted', 'Pending', 'Declined']), }));