Обновлять подколлекцию автоматически в React Native при использовании Firestore - PullRequest
0 голосов
/ 10 апреля 2019

Я добавляю записи во вложенную коллекцию в FireBase, которую я рендую на экране. Проблема, с которой я сталкиваюсь, заключается в том, что новая запись не вытягивается и не отображается на экране после выполнения firestore.add (). Я понял, что firestore / firebase извлекает новые записи автоматически и повторно отображает реальный экран, показывающий их, но в моем случае это не сработало. После выполнения firestore.add () мне нужно вызвать какую-нибудь команду для обновления текущего экрана?

Спасибо

1 Ответ

1 голос
/ 10 апреля 2019

Вы должны подписаться на обновления коллекции, чтобы увидеть обновление в приложении.

Согласно документации :

вы можете прослушать документ с помощью метода onSnapshot ().

Это может быть достигнуто с помощью следующего кода:

state = {
  loading: true,
  users: []
}

componentDidMount() {
  this.unsubscribe = firebase.firestore().collection('users').onSnapshot(this.onCollectionUpdate) 
}

componentWillUnmount() {
  // we have to unsubscribe when component unmounts, because we don't need to check for updates
  this.unsubscribe()
}

onCollectionUpdate = (querySnapshot) => {
  // we have to update the state
  const users = []
  querySnapshot.forEach((document) => {
    const { firstName, lastName } = document.data()

    users.push({
      key: document.id,
      document,
      firstName,
      lastName
    })
  })

  this.setState({ 
    users,
    loading: false
 })
}

Более подробный пример можно найти здесь .

...