Нужно сравнить значение ключа с массивом
Не получается отсеивать сообщения, которые уже были получены. массив всегда наполняется сообщением с последним индексом, но поидее туда должны попадать все. При получении нового сообщения массив перезаписывается новым 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))
}
Ответы (1 шт):
Автор решения: agentx
→ Ссылка
Решил проблему добавлением стейта для хранения id
const [idArr, setIdArr] = useState([])
const idArrCopy = Object.assign([], idArr)
function getMessage () {
api
.getMessage()
.then(res => {
let idMessage = res[0].idMessage
if (!idArrCopy.includes(idMessage)) {
setMessages([
{ message: res[0].textMessage, ownMessage: false },
...messages
])
idArrCopy.push(idMessage)
setIdArr(idArrCopy)
} else {
console.log(`Такой Id уже есть: ${idArr}`)
}
})
.catch(err => console.log(err))
}