有没有一种方法可以使用模板文字来获取请求?

时间:2020-06-06 19:19:31

标签: reactjs fetch

我想定义一个函数,该函数根据其参数发出提取请求,因此我可以简化componentDidMount()内部的提取调用。我已经尝试过下面的代码,但它为setState函数提供了意外的令牌错误。有没有办法在then()内部使用函数的参数?

 constructor() {
    super();
    // cases in date order from 1 to 5. Cases5 is the latest.
    this.state = {
      cases1: [],
      cases2: [],
      cases3: [],
      cases4: [],
      cases5: [],
    };
  }

componentDidMount() {
    fetch("/cases/1")
      .then((res) => res.json())
      .then((cases1) => this.setState({ cases1 }));

    fetch("/cases/2")
      .then((res) => res.json())
      .then((cases2) => this.setState({ cases2 }));

    fetch("/cases/3")
      .then((res) => res.json())
      .then((cases3) => this.setState({ cases3 }));

    fetch("/cases/4")
      .then((res) => res.json())
      .then((cases4) => this.setState({ cases4 }));

    fetch("/cases/5")
      .then((res) => res.json())
      .then((cases5) => this.setState({ cases5 }));
  }

  fetchCaseData = (index) => {
    fetch(`/cases${index}`)
      .then((res) => res.json())
      .then((`cases${index}`) => this.setState({ `cases${index}` }));
  }


1 个答案:

答案 0 :(得分:0)

您不能简单地为变量声明动态名称。但是,您可以使用方括号符号设置对象的动态键,但不能使用对象速记语法

更新后的代码如下所示

 .then((val) => this.setState({ [`cases${index}`]: val }));