【发布时间】:2021-02-18 23:41:31
【问题描述】:
在我的 react native 应用程序中将两个 Promise 链接在一起时遇到了很多麻烦。第一个承诺成功地在异步存储中获取一个值并将其设置为状态。第二个 promise 获取我从 Firebase 获得的数据,但取决于我从第一个 promise 中设置的状态。任何帮助将不胜感激。
import React, { useState, useEffect } from "react";
import { Text, StyleSheet, View } from "react-native";
import firebase from "../../firebase/fbConfig";
import AsyncStorage from "@react-native-async-storage/async-storage";
let DB = firebase.firestore();
function Questions(props) {
const [productId, setProductId] = useState("");
const [question, setQuestion] = useState("");
const [reward, setReward] = useState("");
const getAsyncData = () => {
AsyncStorage.getItem("key").then((value) => setProductId(value))
// works fine //
};
const getDataFromFirebase = (productId) => {
DB.collection("ads")
.where("productId", "==", productId)
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
setQuestion(doc.data().question);
setReward(doc.data().reward);
});
})
.catch(function (error) {
console.log("Error getting documents: ", error);
});
// works fine //
};
useEffect(() => {
getAsyncData().then((productId) => getDataFromFirebase(productId));
// does not work //
});
return (
<>
<View style={styles.container}>
</View>
</>
);
}
export default Questions;
【问题讨论】:
-
你的问题是
getAsyncData没有返回任何东西...试试const getAsyncData = () => { return AsyncStorage.getItem("key").then((value) => setProductId(value)); };或const getAsyncData = () => AsyncStorage.getItem("key").then((value) => setProductId(value));
标签: javascript reactjs firebase react-native promise