У меня есть приложение, похожее на знакомство, и я хочу иметь возможность запрашивать новые совпадения каждый раз, когда пользователь нажимает кнопку вкладки «соединение».
Я не уверен, неправильно ли я пишу await или asyn c, но если пользователь перемещается слишком быстро, чтобы база данных возвращала результаты, возвращаемые совпадения загружаются недостаточно быстро. До сих пор у меня было следующее: при загрузке страницы, которую я вызываю в Firebase, когда пользователь уходит, а затем возвращается обратно на вкладку «соединение», я возвращаюсь в Firebase. метод getMatches()
является вызовом для firebase.
const MatchesScreen = ({navigation}) => {
const {state, updateDislikedQueue, updateLikedQueue, getMatches} = useContext(AuthContext);
const [loaded, setLoaded] = useState(false);
const [queue, setQueue] = useState({});
const [noMatches, setNoMatches] = useState(false);
const [updateProfileAndPreferences,setUpdateProfileAndPreferences] = useState(false);
const getMatchesMethod = async () => {
getMatches().then(matches => {
if (!matches) {
Alert.alert("Update Preferences and Profile before connecting");
setUpdateProfileAndPreferences(true);
} else {
setUpdateProfileAndPreferences(false);
let cardData = [];
for (m in matches) {
if (matches[m].id == state.id) {
continue;
} else {
let user = {
id: matches[m].id,
fullName: matches[m].info.fullName
};
cardData.push(user);
}
}
if (cardData.length > 0) {
setQueue(cardData);
setLoaded(true);
} else {
setNoMatches(true);
Alert.alert("No Connections Available");
}
}
});
};
useEffect(() => {
getMatchesMethod();
const unsubcribe = navigation.addListener("willFocus", () => {
getMatchesMethod();
});
// return unsubcribe.remove();
}, []);
Также, когда я пытаюсь отписаться, слушатель не работает, когда пользователь перемещается назад и вперед. Любая помощь в том, что я делаю не так с вызовами asyn c и слушателем, будет принята с благодарностью.