React Native:导入本地.json异步?

时间:2018-04-21 13:43:08

标签: javascript reactjs react-native ecmascript-6

我有一个本地.json文件,我希望将其用作我的州的起点。然后我计划将状态存储在AsyncStorage中。但我担心的是导入是异步的,我会遇到一些冲突。

这就是我目前正在做的事情

import { data } from './src/data.json'

export default class App extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      data,
    }

    this.updatePitch = this.updatePitch.bind(this)
  }
...
}

但我应该这样做吗?

  async componentDidMount() {
    await this.setState({ data })
  }

(我在执行此操作时会看到一些布局问题,并且会弃用很多关于其他生命周期方法的警告)

然后在尝试与Promise.all联系时可能会做一些AsyncStorage吗?

将本地.json文件用作"boilerplate/template"然后在本地存储修订版本的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

导入捆绑的json是同步的(就像从js文件导入一样)。

你的构造函数没问题。

如果使用Redux,则可以导入json并将其用作reducer中的初始状态。然后,您可以使用redux-persist保留Redux状态。除非您的应用程序非常简单,否则强烈建议使用Redux。

否则,只要更新状态,您就可以将状态存储到AsyncStorage,然后从AsyncStorage中的componentDidMount读取,并使用存储状态调用setState用于初始化。

  

关于其他生命周期方法的许多警告将被弃用

这是RN 0.55.1中的错误,升级到> = 0.55.2来修复它。