Это плохая практика, чтобы слушать в режиме реального времени обновления моего создателя редукса действий? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть это действие 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 обновляются, и может быть несоответствие или что-то еще? или это нормально?

спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...