javascript - 将 props 传递给实现 react suspense 的 axios hook
问题描述
我一直在尝试创建一个获取数据并利用react suspense的钩子。使用页面中的示例(和本文),我创建了一个获取数据的函数(我想将其转换为挂钩)。
例子
问题
目前我无法通过函数传递数据,因为它在被调用时被执行。我想传入数据useWrap(**HERE**)
并在其中使用它fetchData()
预期行为/目标
- 我想将数据传递给 useWrap() 并将其放入 fetchData()
- 我希望 useWrap 成为一个 Hook,以便利用基本的钩子
- 我想利用 React Suspense
有人知道如何满足这些需求并告诉我我做错了什么吗?
谢谢!
解决方案
这应该为您解决问题,并且比您最初的反应更像。
api.js
import React, { useEffect, useState } from "react";
export default function useWrap(id) {
const [apiData, setApiData] = useState({});
const [error, setError] = useState(null);
useEffect(() => {
(async () => {
await fetch(`https://jsonplaceholder.typicode.com/users/${id}`)
.then(async (res) => await res.json())
.then((result) => setApiData(result))
.catch((err) => setError(err));
})();
}, [id]);
return error ? error : apiData;
}
ProfileDetail.js
import React from "react";
import useWrap from "./Api";
export default function ProfileDetails() {
const user = useWrap(1);
if (user === null) {
return;
}
return <div>{user.id}</div>;
}
推荐阅读
- python - 如何更改当前视图的权限,覆盖 django rest-framework 中的 DEFAULT_PERMISSION_CLASSES
- templates - 在 smarty version3 中,我在文件夹结构中看到我们有 2 个插件目录,应该用于创建自定义插件功能?
- cluster-computing - rsh 无法访问集群节点
- android - 在应用程序中下载后如何安装apk,或弹出请求安装?
- deep-learning - 为什么 CNN 通常有一个词干?
- python - Python,滚动百分位数的快速计算
- angular - Asp .Net & Angular 11 - SignalR 404 错误
- sql - 试图从 SQL 数据库显示上个月的数据 - where 子句
- mysql - MySql:这些记录的总和为 9 的所有记录的组合
- python - 在 python 类中使用 sqlalchemy 1.4/2.0 包装原子查询执行的最有效但最强大的方法是什么?