#arrays #react-hooks
#массивы #реагируем крючками
Вопрос:
У меня есть for
цикл, в котором я получаю статус каждого пользователя, если он подключен к сети или нет, и мне нужно поместить этот статус в существующий массив
const user = [
{
"name":"John",
"lastname":"smith"
},
{
"name":"Melissa",
"lastname":"Ryan"
}
]
Я пробовал этот способ, но у меня ошибка
for (var i = 0; i < result.length; i ) {
const dataR = {
order: result[i].userID
};
const options = {
method: "post",
headers: {
Accept: "application/json",
"Content-type": "application/json",
Authentication: user.getHmac("POST", "/api/getonline"),
},
body: JSON.stringify(dataR),
};
fetch(process.env.REACT_APP_DB_URI "/getonline", options)
.then(res => res.json())
.catch(error => {
console.error("Error:", error)
})
.then(response => {
if (response) {
user[i].push({online:response}); <---problem
}
}
ОШИБКА:
Необработанное отклонение (TypeError): не удается прочитать свойство ‘push’ неопределенного
Как вставить новое значение онлайн в пользовательский массив?
Комментарии:
1. Пожалуйста, опубликуйте ошибку, которую вы получаете
2. Я обновил вопрос с ошибкой. Спасибо
Ответ №1:
user[i]
неопределенность означает, что вы индексируете его вне того места, где оно определено. Например, это может быть из-за того, что result.length
он длиннее вашего пользовательского массива.
Однако ваш подход не будет работать в целом, потому что user[i]
это не массив, поэтому вы не можете нажать на него. Чтобы поместить эти данные в массив с online
свойством для user
объекта, это может быть достигнуто путем
user[i] = {...user[i], online: response};