首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从AsyncStorage获取react本机中的项值

从AsyncStorage获取react本机中的项值
EN

Stack Overflow用户
提问于 2019-07-05 14:28:43
回答 4查看 9.1K关注 0票数 5

我是一个初学者,仍然尝试着学习反应本土化,所以帮帮我!

我想访问函数之外的AsyncStorage.getItem值。我将通过代码进一步解释。

这是我的代码

import {AsyncStorage} from 'react-native';

在screen1上设置该值

AsyncStorage.setItem('mobileno', JSON.stringify(MobileNo));

尝试在屏幕2上获得这个值。

代码语言:javascript
复制
 AsyncStorage.getItem('mobileno', (err, MobileNumber) => {
    let abc = MobileNumber;
    console.log("abc value " + abc)
   })


  let { MobileNo } = abc;
  console.log({MobileNo})

我想以let { MobileNo } = abc;的形式访问函数外部的abc值,但它显示了错误!

注意: console.log("abc value " + abc)工作得很好

误差

找不到变量abc

问题

那么,我如何访问该函数之外的整个页面的abc或AsyncStorage值;因为我也希望在其他函数中使用该值!

--简而言之,--我希望AsyncStorage中的存储值可以用于其他函数中。

谢谢你贡献宝贵的时间

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-06 01:54:41

代码语言:javascript
复制
constructor(props) {
    super(props);
    this.state = {
        mobileNumber: '',
    };
}

componentDidMount() {
    AsyncStorage.getItem('mobileno').then((mobileNo) => {
        if(mobileNo){
            this.setState({mobileNumber: mobileNo});
            console.log(this.state.mobileNumber);
        }
    });
}

render() {
    return(
        <View>
            <Text>{this.state.mobileNumber}</Text>
        </View>
    );
}

在这种情况下,异步/等待是不必要的,因为只有在完成.then()函数获取项之后才调用getItem()

票数 5
EN

Stack Overflow用户

发布于 2019-07-05 15:49:28

在您的代码中,abc被调用到范围之外。abc只在回调中声明。另一种方法可以是创建一个返回数据的类方法。我个人认为异步/等待语法更简洁,更容易理解.then()链。

docs展示了这方面的一个例子

代码语言:javascript
复制
_retrieveData = async () => {
  try {
    const value = await AsyncStorage.getItem('mobileno');
      if (value !== null) {
        // We have data!!
        console.log(value);
        return value;
      }
  } catch (error) {
   // Error retrieving data
  }
}
票数 3
EN

Stack Overflow用户

发布于 2019-07-06 09:39:46

从“反应-本机”导入{AsyncStorage};

  • 上面的AsyncStorage是不推荐的,移动到React原生社区。

你现在可以用

1 :-纱线添加@react本地社区/异步存储

2:反应-本机链接@react本机-社区/异步-存储

代码:-

代码语言:javascript
复制
import AsyncStorage from '@react-native-community/async-storage';

storeData = async () => {
  try {
    await AsyncStorage.setItem('@storage_Key', 'stored value')
  } catch (e) {
    // saving error
  }
}

getData = async () => {
  try {
    const value = await AsyncStorage.getItem('@storage_Key')
    if(value !== null) {
      // value previously stored
    }
  } catch(e) {
    // error reading value
  }
}

链接:- https://www.npmjs.com/package/@react-native-community/async-storage

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56905001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档