是否可以在 React JS 中使用 async / await?

新手上路,请多包涵

我开始使用 React Native 进行编程,并且习惯了使用以下语法:

 async myFunction(){
    ...
    return await otherFunction();
}

但是我不知道如何使它与共享包中的 React JS 和 React Native 兼容。我怎样才能做到这一点,以便它在两个平台上都可以工作?

谢谢!

原文由 Santiago Bendavid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 806
2 个回答

React Native 附带 Babel 和一些 Babel 预设,而 Web 上的 React 只是与 React 相关的代码。

如果你今天想在网络上使用 async/await,你需要 Babel 和正确的转换: https ://babeljs.io/docs/plugins/transform-async-to-generator/

或 stage-1 预设,这在当今的 React 应用程序中相当普遍。 http://babeljs.io/docs/plugins/preset-stage-1/

原文由 azium 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用 create-react-app 进行构建,它从 v0.2.3 开始可用

https://github.com/facebookincubator/create-react-app/releases/tag/v0.2.3

它可以像这样在组件内部使用

class App extends Component {
  constructor(props) {
    super(props);
    this.state = { message: '' };
  }

  async componentDidMount() {
    this.setState({ message: 'loading...' });
    let d = await getData('/posts/1');
    this.setState({ message: d });
  }

  render() {
    let { message } = this.state;
    return (
      <div className="App">
        <p className="App-intro">
          { message }
        </p>
      </div>
    );
  }
}

看:

https://github.com/facebookincubator/create-react-app/issues/1024

原文由 Tim Arney 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题