我正在写一个react原生应用程序,它需要在关闭或后台之前存储一个字符串。当应用程序启动时,它需要再次检索字符串。(我正在利用expo进行开发)
我试图将数据存储在componentWillUnmount()
中,但是当我关闭应用程序时,该函数并未被调用。
这是存储数据的函数。
_storeData = async () => {
try {
await AsyncStorage.setItem('data', 'savedData2');
console.log("done storing");
} catch (error) {
console.log(error)
}};
我调用storeData()
,如下所示:
componentWillUnmount() {
console.log("unmount")
this._storeData();
}
首先,我认为它不存储数据,因为我正在调用componentWillUnmount()
中的一个异步函数,该函数可能会在完成之前被取消,但是我也没有收到unmount
日志。
发布于 2019-07-09 23:17:54
没有办法在react-native中检测应用程序何时关闭。
您可以使用AppState检测应用程序何时进入后台,请尝试在文档中检查它:https://facebook.github.io/react-native/docs/appstate
发布于 2021-07-19 21:46:24
我有一些适合我的代码。基本上,它检查应用程序的状态是主动还是被动。被动触发,即使您关闭应用程序与后退按钮。在我的示例中,我正在跟踪用户在我的应用程序中是否处于活动状态。
import React, { useEffect, useRef } from 'react';
import { AppState } from 'react-native';
export default function App(){
const appState = useRef(AppState.currentState);
useEffect(()=>{
fetch()//here I send post request to update users state to active
AppState.addEventListener("change", handleAppStateChange);
return ()=>{
AppState.removeEventListener("change", handleAppStateChange);
}
},[])
const handleAppStateChange = (nextAppState) =>{
if(appState.current.match(/inactive|background/) && nextAppState === "active"){
fetch()// update users status to inactive
}
else{
fetch()// update users status to active
}
appState.current = nextAppState;
}
}
发布于 2019-07-09 23:31:31
如果你使用的是React Navigation,有一种方法。检查this。
https://stackoverflow.com/questions/56955731
复制相似问题