我有一个需求,需要对我的网页进行Salesforce Marketing Cloud的认证,并且该认证过程应仅执行并存储一次。
现在遇到的问题是,在请求认证并获取代码时,我会收到两次请求,第一次请求成功,而第二次请求失败。
问题在于为什么在一个React JS中的useEffect
钩子中会产生两次请求?是不是我的组件被加载了两次?
以下是相关的代码:
useEffect(() => {
async function initialize() {
const params = await getParamsFromUrl();
if (params.code) {
await getTokenAndSaveToSession(params.code);
await fetchJourneyData(); // 将函数名改为fetchJourneyData以提高清晰度
} else {
console.log('There is no code in the params');
}
}
initialize();
}, []); // 空依赖数组确保effect仅在挂载时运行一次
async function getTokenAndSaveToSession(code: string) {
try {
const authService = new AuthService();
const result = await authService.getToken(code);
sessionStorage.setItem('token', result.token);
sessionStorage.setItem('expiration', result.expiration.toString());
} catch (error) {
console.log(error);
}
}