У меня есть это действие thunk для извлечения исходных данных, которые отправляются при загрузке компонента.
Компонент:
const List = ({dispatch, lists}) => {
useEffect(() => {
dispatch(handleInitialData())
},[dispatch])
...
}
Действие:
export const handleInitialData = () => async dispatch => {
// const lists = await firestore.collection('lists').get()
let docs
const lists = await firestore.collection('lists').onSnapshot(snapshot => {
docs = snapshot.docChanges().map(c =>c.doc.data())
if (docs) {
return dispatch(receiveLists(docs))
}
return
})
}
Как вы могу видеть триггеры thunk receiveLists
Но я хочу использовать обновления Firebase Firestore в режиме реального времени, я использую collection('myCollection).onSnapshot(...))
для прослушивания обновлений.
Теперь изначально handleInitialData
только отправляется при загрузке компонента, но теперь с этим слушателем, когда что-то происходит, он запускает еще одну диспетчеризацию receiveLists
Это работает, и если я обновляю данные Firebase, он обновляет.
Мой вопрос, это нормально? Я чувствую, что это неправильно, потому что он запускает диспетчеризацию всякий раз, когда данные в fb обновляются, и может быть несоответствие или что-то еще? или это нормально?
спасибо.