#reactjs #typescript
Вопрос:
Я хочу добавить объект в массив состояний.
Я хочу добавить объект {user.uuid,user.id} в массив состояний, используя синтаксис распространения,я хочу добавить объект {user.uuid, user.id} в массив состояний. Но я получаю ошибку и не могу добавить какое-либо значение к состоянию. Если кто-нибудь знает, как решить эту проблему, пожалуйста, дайте мне знать.
const [id, setId] = React.useState<[{uuid: number; id: number}]>([]);
useEffect(() => {
if (id === null) {
users.map((user) => setId([...id, {user.uuid, user.id}]));
}
}, [users]);
Я хотел бы создать такой массив.
[
{ uuid:sadsa
id:1
},
{ uuid:dadsad
id:2
},
{ uuid:jihji
id:3
},
{ uuid:mokok
id:4
},
]
Комментарии:
1. Пожалуйста, всегда показывайте фактическую ошибку, которую вы получаете. Кроме того, массив объектов, который вы показываете, выглядит подозрительно. Если значения uuid не являются переменными, вы должны использовать кавычки вокруг них.
Ответ №1:
Насколько я понимаю из вашего кода, ваше состояние представляет собой массив, а это означает, что тип, который вы хотите использовать, таков {uuid: number; id: number}[]
. Таким образом, useState
утверждение должно быть:
const [id, setId] = React.useState<{uuid: number; id: number}[]>([]);
Ответ №2:
// define Item type
type Item = {
uuid: number, id: number
}
// define type as Item array
const [id, setId] = React.useState<Item[] | []>([]);
const user: Item = { uuid: 1, id: 123 };
// setId accepts array of Item, So
setId([...id, user]);