我正在开发一个 ReactJS 项目,我需要进行需要身份验证令牌的 API 调用。目前,每次进行 API 调用时,我都会直接在
useEffect
挂钩中传递令牌。这是我正在做的事情的简化示例:
import React, { useEffect, useState } from 'react';
import axios from 'axios';
const MyComponent = () => {
const [data, setData] = useState(null);
useEffect(() => {
const fetchData = async () => {
try {
const response = await axios.get('https://api.example.com/data', {
headers: { Authorization: `Bearer ${token}` },
});
setData(response.data);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchData();
}, [token]); // Dependency array
return (
<div>
{data ? (
<div>Data: {JSON.stringify(data)}</div>
) : (
<div>Loading...</div>
)}
</div>
);
};
export default MyComponent;
我正在考虑:
通过从 cookie 中检索令牌并指定请求的 URL 和正文来创建通用函数来处理 API 调用。
抽象令牌检索以避免在每个 API 调用中重复包含令牌。
我的问题:
使用
useEffect
和令牌作为依赖项是在 API 调用中管理基于令牌的身份验证的最佳实践吗?
如何改进这种方法,使代码更干净、更易于维护,尤其是在令牌管理方面?
React 中是否有我应该考虑的处理身份验证令牌的最佳实践或模式?
好吧,简单来说: