React / Express.js:如何避免多个API调用

时间:2020-05-17 22:35:08

标签: reactjs api express wikipedia

更新:

我试图将死亡计数存储在数组内的变量中,并用死亡计数递增数组。只有当新变量与数组中的最后一个变量不同时,才可以运行Wiki api调用。

现在我的问题是我不能用超过1个变量填充数组。有人知道下面的代码怎么了吗?:

在const数据之后,我添加了以下功能:

wiki()
  .page("COVID-19_pandemic_in_Algeria")
  .then((page) => page.fullInfo())
  .then((info) => {
    (data.confirmed.value = info.general.confirmedCases),
      (data.recovered.value = info.general.recoveryCases),
      (data.deaths.value = info.general.deaths);

   });

const data = {
  confirmed: { value: 0 },
  deaths: { value: 0 },
  recovered: { value: 0 },
};

     app.get("/api", (req, res) => {
       res.json(data);
     });

它保持返回长度:即使多次调用wiki()函数,其返回长度也为1

我有一个带有express.js服务器的react应用。我在服务器上使用wikijs对Wikipedia进行API调用。一切正常,我从Wikipedia中获得了所需的数据!

我每天最多需要4次调用API,以更新某个国家/地区的Covid统计信息。现在,当react组件挂载时,有一个对Express服务器的调用,该服务器随后将对Wikipedia进行api调用。如果该应用程序被成百上千的用户使用,将触发不必要的呼叫。

如何避免多次通话?换句话说,我想以某种方式缓存前两个调用的结果。

这是我的Express.js。我将api调用的结果放入对象数据中:

 const url = "/api";

export const fetchData = async () => {
  }
  try {
    const {
      data: { confirmed, deaths, recovered },
    } = await axios.get(url)
    return { confirmed, deaths, recovered };
  } catch (error) {
    return error;
  }
};

这是我在React中调用express.js路由的地方:

 async componentDidMount() {
    const data = await fetchData();
    this.setState({ data });
  }

最后在App.js中,我调用了上面的fetchData函数:

{{1}}

0 个答案:

没有答案