javascript - 如何在React渲染中使用异步JavaScript

标签 javascript reactjs asynchronous

我需要在 React 的 render() 函数中使用异步函数。我怎么能这么做呢?显然,我现在得到的只是一个 Promise。

import React, { Component } from "react";

export default class FlagImage extends Component {
  getSrc = async name => {
    const url = `https://restcountries.eu/rest/v2/alpha/${name}`;
    const res = await fetch(url);
    const json = res.json();
    const flagURL = json.flag;
    return flagURL;
  };

  render() {
    const { name } = this.props;

    return name ? <img alt={`Flag ${name}`} src={this.getSrc(name)} /> : <div />;
  }
}

最佳答案

您的异步函数返回无法与 src 一起使用的 promise 。您可以将该值存储在状态中并使用它。

import React, { Component } from "react";

export default class FlagImage extends Component {
  state = { imageSrc: "" }
  getSrc = async name => {
    const url = `https://restcountries.eu/rest/v2/alpha/${name}`;
    const res = await fetch(url);
    const json = res.json();
    const flagURL = json.flag;
    setState({imageSrc: flagURL})
  };

  componentDidMount() {
    this.getSrc();
  }

  render() {
    const { name } = this.props;

    return name ? <img alt={`Flag ${name}`} src={this.state.imageSrc} /> : <div />;
  }
}

关于javascript - 如何在React渲染中使用异步JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59456405/

相关文章:

reactjs - Typescript 中抽象泛型 Container 类子类的装饰器

javascript - 这个 javascript 循环仍然是异步的吗?

javascript - 可以在数组上循环的图像

javascript - 在javascript中从数组中获取不存在的元素

javascript - 读取本地文件 react native

reactjs - 从身份服务器登录页面启动授权代码流的正确方法是什么?

javascript - 无法通过异步 ajax 调用呈现 base64 图像返回

c# - 使用异步套接字的回调

javascript - 当选择A改变时改变选择B的div

javascript - Mozilla 雷鸟 "FiltaQuilla"; JavaScript 和正则表达式