Реагируйте на сетку данных, переписав древовидное представление в скрипте типа - PullRequest
0 голосов
/ 02 марта 2020

Новый для React и новый для Typescript. Я пытаюсь протестировать реализацию расширения строк в представленной здесь таблице данных React: https://codesandbox.io/s/4w0xr05r79?from-embed

Я переписываю ее в Typescript, но застрял при переносе ' onCellExpand 'функция. Typescript жалуется, что у 'rows' и 'extendedRows' неявно есть тип 'any'.

Я не уверен, как решить эту проблему, просто отключив флаг, который предотвращает эту проверку. Я не хочу делать это, не понимая, почему я получаю эту ошибку.

Как явно установить тип для этих параметров? Может кто-нибудь также объяснить, почему строки и extendedRows передаются таким образом? Это похоже на нотацию Object Literal, но в их примере все еще есть оператор return?

Вот как это выглядит:

const [state, setState] = useState({ expandedRows: {}, rows });

const onCellExpand = (args: any) => ({ rows, expandedRows }) => {
  const rowKey = args.rowData.id;
  const rowIndex = rows.indexOf(args.rowData);
  const subRows = args.expandArgs.children;
  if (expandedRows && !expandedRows[rowKey]) {
    expandedRows[rowKey] = true;
    updateSubRowDetails(subRows, args.rowData.treeDepth);
    rows.splice(rowIndex + 1, 0, ...subRows);
  } else if (expandedRows[rowKey]) {
    expandedRows[rowKey] = false;
    rows.splice(rowIndex + 1, subRows.length);
  }
  return { expandedRows, rows };
};

return (
    <ReactDataGrid 
        columns={columns}
        rowGetter={i => rows[i]}
        rowsCount={rows.length}
        onCellExpand={args => setState(onCellExpand(args))}
    />
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...