javascript - 通过 React 中的回调函数获取 API
问题描述
我有一个函数,它连接到 API 并返回数据:
import {API_KEY, API_URL} from "./constants";
// /**
// * Fetch all tasks
// * @param {function} successCallback - Function that saves incoming data
// */
export const getOperations = async (id, successCallback) => {
try {
const response = await fetch(`${API_URL}/tasks/${id}/operations`, {
headers: {
Authorization: API_KEY,
},
});
const data = await response.json();
if (data.error) {
throw new Error('Error!');
}
successCallback(data.data);
} catch (err) {
console.log(err);
}
};
然后,在我的一个反应组件中,我调用该函数以从指定的 API 获取数据:道具是必需的 ID。
const [operations, setOperations] = useState([])
console.log(props)
useEffect(() => {
try {
getOperations(data => (props, setOperations(data)))
} catch(e) {
console.log(e)
}
}, [])
问题是,我的 API 看起来像:
`...api/tasks/function%20(data)%20%7B%20%20%20%20%20%20%20%20return%20props,%20setOperations(data);%20%20%20%`20%20%20%7D/operations`
所以我收到 400 错误。有人可以解释一下如何在这种情况下获取 API URL,例如:
/api/tasks/{id}/operations
提前致谢。
解决方案
- 您可以只返回数据,而不是将回调传递给函数的结果。
export const getOperations = async (id) => {
try {
const response = await fetch(`${API_URL}/tasks/${id}/operations`, {
headers: {
Authorization: API_KEY,
},
});
const data = await response.json();
if (data.error) {
throw new Error('Error!');
}
return data.data;
} catch (err) {
console.log(err);
}
};
useEffect(() => {
async function apiCall() {
try {
const data = await getOperations(props.id);
setOperations(data)
} catch(err) {
console.log(err)
}
}
apiCall();
}, [props.id])
推荐阅读
- php - 请帮助理解混淆加密的php代码
- javascript - 如何在 SailsJS 中使用 Twig 模板?
- android - Android Studio 让我的项目相互混淆
- python - Matplotlib 报告找不到字体系列“衬线”
- unit-testing - 在单元测试中调试异步任务时遇到问题,因为它没有被输入
- qt - QNetworkAccessManager 上传失败
- objective-c - 在 Objective-C 中从异步块增加变量
- angular - 角度为 5 的每个单元格上带有复选框的树形网格
- python - Numpy einsum 二维数组的外部总和
- node.js - AWS Lamda 中的节点功能超时