Нужно сравнить значение ключа с массивом
Не получается отсеивать сообщения, которые уже были получены. массив всегда наполняется сообщением с последним индексом, но поидее туда должны попадать все. При получении нового сообщения массив перезаписывается новым id, а старый удаляется
function getMessage () {
api
.getMessage()
.then(res => {
let idArr = []
if (!idArr.includes(res[0].idMessage)) {
idArr.push(res[0].idMessage)
setMessages([
{ message: res[0].textMessage, ownMessage: false },
...messages
])
console.log(res[0].idMessage) // BAE5E73CD474DE6A
console.log(idArr) // ['BAE5E73CD474DE6A']
console.log(res) // ключ-значение в объекте: idMessage: "BAE5E73CD474DE6A"
} else {
console.log(`Второй вызов ${idArr}`)
}
})
.catch(err => console.log(err))
}
Источник: Stack Overflow на русском