AsyncStorage不在发布上工作,但在调试(React Native)上工作


"@react-native-async-storage/async-storage": "1.15.5",
"react": "17.0.1",
"react-native": "0.64.2",
下面是我如何使用Async
fetch('',{
... //codes here
.then((response) => response.json())
.then((responseJson) => {
AsyncStorage.setItem('user_token', JSON.stringify(responseJson.token));
AsyncStorage.setItem('user_id', JSON.stringify(responseJson.data));
AsyncStorage.setItem('login_type', 'LocalLogin');

});
});

然后这里是我如何得到asyncstorage

const [getData, setGetData] = useState();
const initializeData = async() => {
const userToken = await AsyncStorage.getItem('user_id');
if(userToken)
{
setGetData(JSON.parse(userToken));
}
}
useEffect(() => {
initializeData();
},[]);
useEffect(() => {
getUserData();
,[navigation,isFocused]);
const getUserData = async() => {
var formBody = JSON.stringify({email:`${getData.email}`});
fetch('',{ ... //more codes here
}

我应该从我的API获得更新的数据,但似乎getData是空的,它也应该工作,因为我正在重新渲染组件。取回工作正常,因为我可以登录。我遇到的主要问题是AsyncStorage。有人遇到过这种问题吗?

您有一个竞争条件,其中initializeData和getUserData都将在挂载时被调用,并且getData还没有设置。

你可以这样操纵比赛。

useEffect(() => {
if (getData) getUserData();
,[navigation,isFocused,getData]);

我在我的adb logcat上看到它不能存储太多数据

所以我所做的就是切碎我的数据,只存储需要的数据。我就是这么做的。

AsyncStoragesize设置为6MB默认情况下,但当它有很多数据时,你必须增加大小。

如果你想存储所有的数据,你可以更新下面的属性。

文件:android/gradle.properties

AsyncStorage_db_size_in_MB=10

AsyncStorage_db_size_in_MB=15

取决于你想要存储多少数据。

相关内容

  • 没有找到相关文章

最新更新