Таблица материалов с Typescript дает мне общую ошибку c при использовании хука состояния - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь запустить Таблицу материалов (Material UI) в проекте машинописи / реагирования. Я новичок в машинописи и думаю, что отправляю неверный тип данных.

<MaterialTable
      title="Editable Example"
      columns={state.columns}
      data={state.data}
      editable={{
        onRowAdd: (newData) =>
          new Promise((resolve) => {
            setTimeout(() => {
              resolve();
              **setState((prevState) => {**
                const data = [...prevState.data];
                data.push(newData);
                return { ...prevState, data };
              });
            }, 600);
          }),

Ошибка на prevState в строке:

setState((prevState) => {

Ошибка, которая показывает:

Аргумент типа '(prevState: Table) => {data: ({имя: строка; фамилия: строка; birthYear: номер; birthCity: число;} | {name: string ; фамилия: строка; birthYear: число; birthCity: число;}) []; столбцы: [{...; }, {...; }, {...; }, {...; }]; } 'нельзя назначить параметру типа' SetStateAction '. Тип '(prevState: Table) => {data: ({имя: строка; фамилия: строка; birthYear: число; birthCity: число;} | {имя: строка; фамилия: строка; birthYear: число; birthCity: число;} ) []; столбцы: [{...; }, {...; }, {...; }, {...; }]; } 'нельзя назначить типу' (prevState: Table) => Table '. Типы возврата подписи вызова '{data: ({имя: строка; фамилия: строка; birthYear: номер; birthCity: число;} | {имя: строка; фамилия: строка; birthYear: номер; birthCity: число;}) []; столбцы: [{title: string; поле: строка; }, {...; }, {...; }, {...; }]; } 'и' Table 'несовместимы. Типы «данных» несовместимы между этими типами. Тип '({имя: строка; фамилия: строка; birthYear: число; birthCity: номер;} | {имя: строка; фамилия: строка; birthYear: номер; birthCity: число;}) []' отсутствуют следующие свойства из тип '[{name: string; фамилия: строка; birthYear: число; BirthCity: число; }, {имя: строка; фамилия: строка; birthYear: число; BirthCity: число; }] ': 0, 1 TS2345

Это мой тип данных:

type Table = {
  columns: [
    {title: string, field: string},
    {title: string, field: string},
    {title: string, field: string, type: any},
    {title: string, field: string, lookup: {}},
  ],
  data: [
    {name:string, surname: string, birthYear:number, birthCity: number},
    {name:string, surname: string, birthYear:number, birthCity: number},
  ];
}

А это хук состояния использования:

const [state, setState] = React.useState<Table>({
    columns: [
      { title: 'Name', field: 'name' },
      { title: 'Surname', field: 'surname' },
      { title: 'Birth Year', field: 'birthYear', type: 'numeric' },
      {
        title: 'Birth Place',
        field: 'birthCity',
        lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
      },
    ],
    data: [
      { name: 'Mehmet', surname: 'Baran', birthYear: 1987, birthCity: 63 },
      {
        name: 'Zerya Betül',
        surname: 'Baran',
        birthYear: 2017,
        birthCity: 34,
      },
    ],
  });

Спасибо !

1 Ответ

0 голосов
/ 20 апреля 2020

Мне удается решить это самостоятельно. Это была проблема с определением таблицы. Правильно:

type Table = {columns : Column[], data: Data[]}
type Column = { title: string; field: string; type?: any; lookup?: any}
type Data = { name: string; surname: string, birthYear: number, birthCity: number }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...