你可以在React Native异步中制作render()方法吗?

时间:2019-02-05 17:23:38

标签: 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()”时,我得到“不变违规:对象作为React子对象无效”。

有什么提示吗?

1 个答案:

答案 0 :(得分:2)

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

_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()}
  )
}