react-native - 你可以在 React Native 异步中创建 render() 方法吗?

标签 react-native asynchronous

我有一个 React Native 组件,它需要从异步存储中获取一个对象才能进行渲染。像这样的东西。

class Class1 extends Component {
  async render() {
    let data = AsyncStorage.getItem('data');
    return (
      <View>
        {data}
      </View>
    )
  }
}

我让我的 render() 方法成为异步函数的原因是我可以等待 AsyncStorage.getItem() 方法的返回,以便组件不会尝试返回直到“数据”对象有已从异步存储返回。但是,当我使用“async render()”时,我得到“Invariant Violation: Objects are not valid as a React child”。

有小费吗?

最佳答案

不需要,您需要条件渲染这样的东西。

_retrieveData = async () => {
  try {
    const value = await AsyncStorage.getItem('data');
    if (value !== null) {
      // We have data!!
      return (
          <View>{value}</View>
      );
    }
  } catch (error) {
    // Error retrieving data
  }
};

然后在您的渲染函数中,调用它。
render() {
  return (
    {this._retrieveData()}
  )
}

关于react-native - 你可以在 React Native 异步中创建 render() 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539887/

相关文章:

javascript - 保证异步js

ios - React Native 23.1 意外 token (14 :6)

javascript - Android 文件提供程序错误(错误 : Unsupported type 'files-path' )

cocoa - 如何阻止直到 Cocoa 中发布特定通知?

java - Java 中 Thrift 的异步请求

javascript - 如何使用 mongoose 中的用户对象 id 数组返回文档数组?

c# - 开始任务,稍后等待完成

react-native - React Native 和 pod 安装失败

javascript - 离开页面时 React Native 不运行函数

react-native - 在React Native Navigator中在组件之间传递值