Я пытаюсь установить данные с помощью этой функции и не устанавливаю переменную. Как я могу установить информацию для внешнего использования с помощью этого?
Вот мой код
const docRef = store.collection('users').doc(item.email)
var image;
docRef.onSnapshot((doc) => {
if (doc.exists) {
image = doc.data().picture
}
})
Как я могу установить переменную изображения в этой функции для использования вне onSnapshot? Это проект React JS.
Почему использование переменной не работает?
onSnapshot
- это асинхронный, поэтому, если вы возвращаете переменную до загрузки данных, она будет неопределенной. Если вы установите данные в состоянии, они будут обновлять данные везде, где они отображаются.
Хорошо, это объясняет это
Также оформить заказ Почему Firebase API асинхронный?
В ответ вы должны обрабатывать данные в состоянии
import React ,{useState} from 'react';
const [image,setImage] = useState('');
const docRef = store.collection('users').doc(item.email);
docRef.onSnapshot((doc) => {
if (doc.exists) {
setImage(doc.data().picture) // Set Image Here
} })
теперь вы можете работать с константой изображения вне совок onSnapshot
Вы должны установить переменную в состоянии, а не просто var.. checkout Хук состояния