首页 > 解决方案 > 在 redux reducer 和 action 中获取数据 - 怎么做

问题描述

我很难找出如何将我的 fetch 函数替换为我的 action 和 reducer。这是没有 redux 的样子

async getData() {
    const amount = this.props.amount;
    if (amount === isNaN) {
      return;
    } else {
      try {
        await fetch(
          `https://api.exchangeratesapi.io/latest?base=${this.props.base}`,
        )
          .then(res => res.json())
          .then(data => {
            const date = data.date;
            const result = (data.rates[this.props.convertTo] * amount).toFixed(
              4,
            );
            this.setState({
              result,
              date,
            });
          }, 3000);
      } catch (e) {
        console.log('error', e);
      }
    }
  }

在 redux 中应该如何查看 action 或 reducer 或两者以获得相同的结果?

标签: javascriptreact-nativereduxreact-redux

解决方案


Redux 不允许您在 action 或 reducer 中进行 api 调用。相反,您可以使用redux-observableredux-sagaredux-thunk等库。我个人推荐redux-observable。

如果您仍想自己尝试,则必须创建三个操作 - 一个用于请求,一个用于 api 调用成功,一个用于失败。您可以编写相同的代码,而不是setState在调用解决之前和之后调度适当的操作。


推荐阅读