我想使用异步存储.每次我调用时不使用异步函数,如下所示

FunctionLogin = () =>{ //other methods here ........ }

它没有在任何地方等待,它会保存到数据库中,但当我使用let Email=AsyncStorage.getItem(‘Email’)回调它时,它不会返回任何类似于邮箱的内容,只是我看到的是[Object Object

我该如何解决这个问题?

保存到异步存储的FETCH方法如下所示

 `FunctionLogin = async () =>{
    //navigation.replace('VirtualAccountPage');

    let item = {email, password,phone};
    fetch('https://xxxxxxxxxxxxxxxx/api/sign-up', {
      method: 'POST',
      mode: 'cors',
      headers: {
        Accept: 'application/json',
        'Content-type': 'application/json',
      },
      body: JSON.stringify(item),
    })
      .then(response => response.json())
      .then(responseJson =>{
        if (responseJson.message === 'User created Successfully') {
            await AsyncStorage.setItem('email', email);
            await AsyncStorage.setItem('phone', phone);
          alert('I am Registered');
          navigation.replace('VirtualAccountPage');
        } else {
          alert(responseJson);
        }
      })
      .catch(error => {
        console.error(error);
      });
  }`

回调它的函数,因此它可以用作持久化,如下所示

`  FunctionUserDetails = () => {
    let email  = AsyncStorage.getItem('email');
    let phone  = AsyncStorage.getItem('telephone');
    //navigation.replace('Dashboard');
    alert(email);
  };`

我怎么才能让它起作用呢?

我希望能够保存数据本地使用异步存储,这样我就可以持久的一些其他屏幕上的数据等.我try 了几件事,看看它是否可以像预期的那样工作,我没有看到它的工作方式,我想.

推荐答案

要从AsyncStorage获得值,您需要使用await,该函数应从async开始

fetch('https://xxxxxxxxxxxxxxxx/api/sign-up', {
  method: 'POST',
  mode: 'cors',
  headers: {
    Accept: 'application/json',
    'Content-type': 'application/json',
  },
  body: JSON.stringify(item),
})
  .then(response => response.json())
  .then(async (responseJson) =>{ // add async here
    if (responseJson.message === 'User created Successfully') {
        await AsyncStorage.setItem('email', email);
        await AsyncStorage.setItem('phone', phone);
      alert('I am Registered');
      navigation.replace('VirtualAccountPage');
    } else {
      alert(responseJson);
    }
  })
  .catch(error => {
    console.error(error);
  });

const FunctionUserDetails = async () => { // change this
 let email  = await AsyncStorage.getItem('email'); // change this
 let phone  = await AsyncStorage.getItem('telephone'); // change this
 //navigation.replace('Dashboard');
 alert(email);
};`

React-native相关问答推荐

React Native在同一页面上使用多个不同的导航器

如何在底部标签导航中添加顶部标签

为什么将字符串写入文件然后将相同的文件作为字符串读取会导致不同的字符串?

在 ReactNative 中调用 RCTDeviceEventEmitter.emit 时出错

如何在 react-native 中使用 Animated 制作 svg 动画

如何运行 React-Native 示例?

react native foreach 循环

带有 react-navigation 的 DrawerNavigation 标头

为什么 Android Studio 强制使用 Android 支持库中的 Androidx?

SyntaxError: const 声明中缺少初始化程序

当我导航到react-native 的新页面时,如何强制卸载组件?

如何使 React Native Animated.View 可点击?

如何在 react-native 中从 AsyncStorage 中删除元素

Ipad 上的 React Native - 错误 - could not connect to development server

React Native - React Navigation导航转换

在 `../node_modules/react-native/React` 中找不到 `React-Core` 的 podspec

Xcode 12 - 没有要编译的架构(ONLY_ACTIVE_ARCH=YES,active arch=x86_64,VALID_ARCHS=arm64e armv7s arm64 arm7)

尽管 TypeScript 编译器错误,为什么我的 React Native 应用程序构建成功?

使用 React Native 和 Redux 的动画状态管理

保存时 Visual Studio 代码格式化失败