【问题标题】:@react-native-async-storage/async-storage getItem is giving value as false@react-native-async-storage/async-storage getItem 的值为 false
【发布时间】:2021-08-07 22:03:11
【问题描述】:

我正在尝试访问与设置它的文件不同的文件中的 react-native 异步存储。在设置它的同一个文件中,我能够获得该值。但在不同的文件中,我将“false”作为值。 任何帮助将不胜感激。

import AsyncStorage from '@react-native-async-storage/async-storage';

 const getData = async () => {
    console.log("fetching data from asyncstorage")
    try {
      const value = await AsyncStorage.getItem('userToken');        << retuning false
      if(value !== null) {
        console.log(value);
        token.token=value;              
      }
    } catch(e) {
        console.log(e);
    }
  }

const callfunction=()=>{
    getData();
}

【问题讨论】:

    标签: react-native asyncstorage


    【解决方案1】:

    这就是我能够使它工作的方法,如果有人有更好的解决方案,请在此处发布,

    由于 AsyncStorage 的操作是以异步方式进行的,这意味着主线程不会等待函数调用完成,我发现最好在需要之前调用函数并保存它。 为了实现这一点,我使用了一个反应钩子“useEffect”,这类似于springboot替代@PostConstruct,这意味着当您导航到页面时将调用“useEffect”。所以代码看起来像这样。

    import AsyncStorage from '@react-native-async-storage/async-storage';
    import React,{useEffect} from 'react';
    const [token, setToken] = React.useState({
        token: "",
    });
    
    const getData = () => {
        console.log("fetching data from asyncstorage")
        AsyncStorage.getItem('userToken').then((value) => {
            console.log("token : "+ value);
            token.token=value;
        }).done();
    }
    
    useEffect(() => {  
        if(token.token=="")  
        {
            getData();
        }
    });
    

    如果有人发现任何支持此内容的好博客或视频,请在此处发布,如果我的解释与技术方面有偏差,请帮助我更好地理解它。

    【讨论】:

    • 缺少很多信息。你想达到什么目的? token 是什么,token.token 是什么?展示完整的组件并解释您正在尝试做什么,您将获得更多的社区关注和反馈。
    • 没错,AsyncStorage.getItem 是异步的。感谢您的知识=)
    猜你喜欢
    • 1970-01-01
    • 2017-10-31
    • 2021-02-16
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2021-11-13
    相关资源
    最近更新 更多