reactjs - 如果我想从 api 调用 react 返回响应,我应该在返回中添加什么?
问题描述
我需要在我的 api 调用中添加标头。我尝试了很多不同的方法都无济于事。这是我没有标题的原始 api 调用:
export default async function FetchPageMarkdown(page: string): Promise<string> {
const baseUrl = getBackendUrl();
let response = await fetch(`${baseUrl}/api/pagemarkdown/${page}`);
let text = await response.text();
return text
}
这就是我尝试添加标题的方式:
const FetchPageMarkdown = (page: string): Promise<string> => {
const { getAccessTokenSilently } = useAuth0();
const callSecureApi = async () => {
const token = await getAccessTokenSilently();
const baseUrl = getBackendUrl();
const response = await fetch(
`${baseUrl}/api/pagemarkdown/${page}`,
{
headers: {
Authorization: `Bearer ${token}`,
},
}
);
const text = await response.text();
return text;
}
};
export default FetchPageMarkdown;
在没有返回的情况下,我得到一个声明类型既不是“void”也不是“any”的函数必须返回一个值。我想返回来自markdown api调用的文本。如果我将 return 放在 callSecureApi 函数之外,它将找不到文本。
解决方案
您是否尝试过调用并返回异步函数的结果,即return callSecureApi();
?
由于useAuth0
它是一个 React 钩子,它不能从函数中调用(违反钩子规则),但它的getAccessTokenSilently
函数可以被传递。
const fetchPageMarkdown = (getAccessTokenSilently: () => string, page: string): Promise<string> => {
const callSecureApi = async () => {
const token = await getAccessTokenSilently();
const baseUrl = getBackendUrl();
const response = await fetch(
`${baseUrl}/api/pagemarkdown/${page}`,
{
headers: {
Authorization: `Bearer ${token}`,
},
}
);
const text = await response.text();
return text;
}
return callSecureApi(); // invoke and return Promise
};
用法:
const { getAccessTokenSilently } = useAuth0();
fetchPageMarkdown(getAccessTokenSilently, page)
.then(text => {
// handle returned text
});
推荐阅读
- select - 从 InfluxDB 数据库中提取单个字段值
- .net - 在 VB.NET 中用给定的大小和 X/Y POS 绘制一个圆会产生意想不到的结果
- python - 尝试切换 cmd discord.py 时出错
- php - 尝试在 Laravel 项目中渲染 React 组件时出现问题
- javascript - 使用 onChange 根据 React 中的索引选择特定复选框
- cakephp - 在 Cakephp4 中找不到保存记录的错误
- python - 根据熊猫数据框中的另一列获取名称
- vba - VBA cval 和 pval
- swiftui - SwiftUI检测删除按钮被按下
- python - 无法将任务添加到待办事项列表