【发布时间】:2020-09-10 09:34:48
【问题描述】:
我只是想了解 JavaScript 引擎的这种行为。我有一个事件监听器,它在事件后调用处理程序。在这个处理程序中,我刷新我的令牌并将其放入 redux。在第一次调用时一切正常,但是当处理程序再次调用时,我有令牌刷新错误,因为它发送旧的刷新令牌,与 redux 中的不同。
import React, {useEffect, useState} from 'react';
import {useSelector, useDispatch} from 'react-redux';
import {setAuthData} from '../redux/actions/actions';
const Distributor = props => {
const dispatch = useDispatch();
const auth = useSelector(store => store.Auth); // auth from redux
useEffect(() => { // setting my event listener
AppState.addEventListener('change', handleAppStateChange);
return () => {
console.log('distributor unmount');
AppState.removeEventListener('change', handleAppStateChange);
};
}, []);
const handleAppStateChange = nextAppState => { // my handler
if (nextAppState === 'active') {
getProfileData()
}
};
async function getProfileData() { // function that processes refreshing token
try {
const responseFromAuth = await refreshToAccessToken(
auth.refresh_token,
).then(res => res.json());
if (responseFromAuth.access_token) {
dispatch(setAuthData(responseFromAuth));
} else {
console.log(
`Error getting access token from refresh in distributor: ${
responseFromAuth.error_description
}`,
);
}
} catch (e) {
console.log(`Error getting profile data: ${e}`);
}
}
}
【问题讨论】:
标签: javascript reactjs redux