Я хочу обновить свое состояние, добавив новые сообщения из Firestore onSnapshot
в существующий массив сообщений, но внутри onSnapshot
У меня есть доступ к состоянию только после подписки.
const [messages, setMessages] = useState([]);
useEffect(() => {
const ref = firestore()
.collection('Msg_Messages')
return ref.onSnapshot(querySnapshot =>
setMessages(messages => messages.concat(querySnapshot.docs)))
}, [])
Когда я получаю сообщение, я получаю:
OnMountMessages + lastMessage
вместо
OnMountMessages + allMessagesSinceMount + lastMessage
Я полагаю, поскольку onSnapshot
создает свою собственную копию messages
и setMessages
. Единственное решение, о котором я могу подумать, - это использовать Redux и сохранять состояние вне компонента, но есть ли другое решение?