在react native中调用fetch后,如何使用异步存储在本地保存数据?

jchrr9hc  于 2022-12-24  发布在  React
关注(0)|答案(2)|浏览(137)

我想使用异步存储。每次调用时不使用异步函数,如下所示
第一个月
这没有等待任何地方,它保存到数据库,但当我使用let email = AsyncStorage.getItem('email');回叫它,它不返回任何类似的电子邮件只是[对象对象]是我看到的
如何解决此问题
保存到异步存储的获取方法如下所示

`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);
  };`

我怎么才能让它工作?
我希望能够使用异步存储本地保存数据,这样我就可以在其他一些屏幕上保存数据等。我尝试了几件事,看看它是否可以按预期工作,我没有看到它的工作,因为我想要的。

r1zhe5dt

r1zhe5dt1#

要从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);
};`
kupeojn6

kupeojn62#

安装this更新的异步存储npm
尝试使用以下代码实现:

fetch('https://xxxx/login', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-type': 'application/json',
  },
  body: JSON.stringify(item),
})
  .then(response => response.json())
  .then(async (responseJson) =>{ // add async here
    if (responseJson.stausCode === 200) {
        await AsyncStorage.setItem('name', name);
    } else {
      alert(responseJson);
    }
  })
  .catch(error => {
    console.error(error);
  });

相关问题