【发布时间】:2021-12-01 00:43:29
【问题描述】:
问题
我目前正在处理 UI 并且我使用 React。在 .jsx 组件内部,我拥有一切:HTML (JSX)、JavaScript-Logic 和 API 调用。一切都在一个文件中,这变得一团糟。
目标
我想外包功能,所以我创建了一个应该处理所有 API 调用的类。我也想使用 RxJS 并将 axios 与 RxJs 结合起来。
代码
代码中发生了什么?我有一个类 ApiCalls,其中包含一个静态方法 putApiCallExample。我在那里进行了 api 调用,但使用 axios 创建了一个 Promise。我使用 rxjs 的 from() 功能创建一个可观察对象,并在管道内返回数据。
在 Main.jsx 我在 useEffect()-hook 中使用它,我订阅它并根据它设置状态。
class ApiCalls:
static putApiCallExample(URL, data){
const promise = axios
.put(URL, data, {
headers: {
"Content-Type": "application/json"
}
});
return from(promise).pipe(map(res => res.data));
}
const Main = () => {
const [show, setShow] = useState(false);
useEffect(() => {
ApiCalls.putApiCallExample().subscribe(
res => {
console.log("1", res);
setShow(true);
},
err => {
console.log("2", err)
}
);
}, [])
}
问题
- 我可以像 axios 中的 .then() 一样解释 subscribe() 功能吗?
- 我需要在此处退订吗?
- 这是否会导致混合使用 axios 和 rxjs 时出现性能问题?
【问题讨论】:
-
this 回答你的问题了吗?
-
@RandyCasburn 嗨。你说,useEffect() 会重复,所以我需要 unsubscribe()。你能解释一下吗?
-
在这种情况下不会。
标签: javascript asynchronous promise rxjs