Я не могу получить доступ к данным в ответ

У меня следующая проблема: Когда я печатаю значение переменной 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,
    });
  }
Другие вопросы по тегам