React Native 等待 AsyncStorage 获取值

Posted

技术标签:

【中文标题】React Native 等待 AsyncStorage 获取值【英文标题】:React Native wait for AsyncStorage to get value 【发布时间】:2016-09-16 07:53:01 【问题描述】:

这是一个常见问题,React Native 试图在从 AsyncStorage 获取值之前进行渲染。我已经在几个地方看到了解决方案,但由于某种原因,它对我来说根本不起作用。也许是因为我使用的是 React Native 25.1?它只是无限期地卡在“正在加载...”上。如果我在渲染上运行控制台日志以显示 isLoading(没有if 方法),它会返回false,然后返回true,所以理论上它应该可以工作。但是使用 if 方法使其永远停留在“加载”状态,并且日志只返回 false。

import React,  Component  from 'react';

import 
  Text,
  View,
  AsyncStorage
 from 'react-native';

  class MainPage extends Component 
   constructor(props: Object): void 
   super();
   this.state = 
     isLoading: false,
   ;
 

  componentWillMount() 
    AsyncStorage.getItem('accessToken').then((token) => 
      this.setState(
        isLoading: false
      );
    );
  

  render() 
    if (this.state.isLoading) 
      return <View><Text>Loading...</Text></View>;
    
    // this is the content you want to show after the promise has resolved
    return <View/>;
  

);

【问题讨论】:

您是否尝试将代码放入componentDidMount 【参考方案1】:

嘿试试这个...

import React,  Component  from 'react';

import 
  Text,
  View,
  AsyncStorage
 from 'react-native';

class MainPage extends Component 

   constructor(props: Object): void 
       super(props);
       this.state = 
         isLoading: false,
       ;
   

  componentWillMount() 
    AsyncStorage.getItem('accessToken').then((token) => 
      this.setState(
        isLoading: false
      );
    );
  

  render() 
    if (this.state.isLoading) 
      return <View><Text>Loading...</Text></View>;
    
    // this is the content you want to show after the promise has resolved
    return <View/>;
  

如果您需要更多说明,请告诉我...

【讨论】:

好的,您似乎刚刚纠正了我的错字,即意外留下了“var component = React.createClass(”。显然这不是问题,否则它会立即引发错误,它不会首先显示“加载”屏幕,不要介意太久。除非您的代码中有其他内容,但据我所知,除了删除错字之外,它是相同的? 嘿.. 相同的代码和 react-native 0.25.1 在我的系统中为我工作。 我收到此警告:只能更新已安装或已安装的组件。这通常意味着您在未安装的组件上调用了 setState、replaceState 或 forceUpdate。这是一个无操作。 @jickson

以上是关于React Native 等待 AsyncStorage 获取值的主要内容,如果未能解决你的问题,请参考以下文章

react-native 获取异步/等待响应过滤

React Native 测试 - 无需等待即可行动

如何等待 react native Image Picker 回调函数响应?

React Native 等待 AsyncStorage 获取值

如何等待firebase数据获取完成并在react-native中获取不是承诺的值?

React Native创建项目等待时间长解决