javascript - 在 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 或两者以获得相同的结果?
解决方案
Redux 不允许您在 action 或 reducer 中进行 api 调用。相反,您可以使用redux-observable、redux-saga或redux-thunk等库。我个人推荐redux-observable。
如果您仍想自己尝试,则必须创建三个操作 - 一个用于请求,一个用于 api 调用成功,一个用于失败。您可以编写相同的代码,而不是setState
在调用解决之前和之后调度适当的操作。
推荐阅读
- java - 在 java 中从 scala.collection.immutable.List 转换为 java.util.List
- css - React 组件不会与 react-bootstrap 导航栏对齐
- regex - 如何在 splunk 中第一次出现字符之前删除所有内容
- javascript - 为什么 (00123 + 34351) 在 javascript、java 和 python 中返回 34434 ?正确答案是 34474
- javascript - 在表单验证按钮单击后运行 JS 函数
- .net-core - 带有可移植 dotnet 二进制文件的 VSCode C#
- python - Django 使用模型表单更新模型实例
- c - cs50 pset4 过滤器边缘检测
- r - 有没有办法使用平均值(SE)而不是 R 中的计数来实现平面表?
- django - 未找到没有参数的“create_order”反向。尝试了 1 种模式:['create_order/(?P
[^/]+)/$']