Я не могу получить доступ к данным в ответ
У меня следующая проблема: Когда я печатаю значение переменной shells внутри функции deleteRows, он печатает пустой объект, но когда я печатаю его снаружи (первый console.log), он печатает массив правильно. О чем это? Я вызываю функцию, удаляя значение.
Я пытаюсь сделать функцию стрелки, как вы видите в коде.
import React from 'react';
// import PropTypes from 'prop-types'; //verrificacion de tipos
import MUIDataTable from 'mui-datatables';
import columns from '../Objects/columns';
const axios = require('axios');
function SimpleTable(props) {
const { datos } = props;
const shells = datos.map(
dato => Object.values(dato),
);
console.log({shells})
const deleteRows = (RowsDeleted) => {
const ids = RowsDeleted.data.map(d => d.dataIndex);
// const idsToDeleted = ids.map(d => shells[d][9]);
console.log({shells})
axios({
method: 'post',
url: 'http://localhost:5000/eliminado',
data: RowsDeleted,
});
}
const options = {
filterType: 'dropdawn',
responsive: 'stacked',
onRowsDelete: deleteRows,
};
// console.log(shells)
return (
<MUIDataTable
title="NutsForShells"
data={shells}
columns={columns}
options={options}
/>
);
}
// SimpleTable.propTypes = {
// classes: PropTypes.object.isRequired,
// };
export default (SimpleTable);
1 ответ
Проходя этот разговор, я обнаружил, что мы не можем использовать данные извне в callback
из mui-datatables
,
Из документов,
onRowsDelete - функция обратного вызова, которая срабатывает при удалении строк. function(rowDeleted: object(lookup: {dataindex: boolean}, data: arrayOfObjects: {index, dataIndex})) => void OR false (возврат false предотвращает удаление строки.)
Когда вы нажимаете, чтобы удалить строку, вы получаете строки для удаления, а также полный массив данных. Так что ваши deleteRows
функция должна принимать второй аргумент, который является массивом данных,
const deleteRows = (RowsDeleted, data) => {
const ids = RowsDeleted.data.map(d => d.dataIndex);
// const idsToDeleted = ids.map(d => shells[d][9]); //This is possibly this, ids.map(d => data[d][9])
console.log(data) //Now you will get data
axios({
method: 'post',
url: 'http://localhost:5000/eliminado',
data: RowsDeleted,
});
}