Я пытаюсь запустить Таблицу материалов (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,
},
],
});
Спасибо !