【发布时间】:2021-04-11 08:01:20
【问题描述】:
这个屏幕有点工作。第一次打开屏幕时,只显示启动画面。返回然后再次打开屏幕然后显示数据。 我需要帮助从缓存中获取数据并在屏幕第一次打开时显示它。
我需要屏幕在保存和从缓存中检索数据时显示启动画面,然后在您第一次打开屏幕时显示实际数据。
const [dataList1, setDataList1] = useState([]);
const [cacheData, setCacheData] = useState(null);
// Function to get data from cache
const getDataFromCache = async () => {
const data = await cache.get(cacheKeys.BENEFITS_CACHE_KEY);
setCacheData(data);
}
// Get data from cache
useEffect(() => {
getDataFromCache();
}, [])
// Store data to cache
useEffect(() => {
if (dataList1.length > 1) cache.store(cacheKeys.BENEFITS_CACHE_KEY, dataList1);
}, [dataList1]);
useEffect(() => {
var benefitsArr = [];
var benefitsDetailsArr = [];
const unsubscribe = auth.onAuthStateChanged((authUser) => {
if (authUser) {
db
.collection('members')
.doc(authUser.uid)
.get()
.then(user => {
benefitsArr.push(...user.data().benefits);
db
.collection('benefits')
.get()
.then(snapshots => {
snapshots.forEach(doc => {
if (benefitsArr.includes(doc.id))
{
benefitsDetailsArr.push(doc.data());
}
})
// Save results to a useState constant
setDataList1(dataList1 => ([...dataList1, ...benefitsDetailsArr]));
})
.catch(error => console.log(error))
})
.catch(error => console.log(error))
}
})
return unsubscribe;
}, []);
if (!cacheData) return <SplashScreen />
【问题讨论】:
标签: javascript react-native google-cloud-firestore firebase-authentication