Я хочу добавить объект в массив react

#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]);