Я хотел бы реализовать процесс аутентификации с помощью React и React Router, который вызывает API для обновления токена sh при каждом изменении маршрута, но встречается бесконечный refre sh.
const location = useLocation(); // react-router
const [auth, setAuth] = useState({ accessToken: 'aaa', refreshToken: 'bbb' }); // token-based auth
const refresh = useCallback(async () => {
const response = await fetch(url, auth.accessToken, auth.refreshToken); // pseudo code
const body = await response.json();
setAuth({ accessToken: body.accessToken, refreshToken: body.refreshToken });
}, [auth, setAuth]);
useEffect(() => {
Promise.resolve().then(refresh);
}, [location.pathname, refresh]);
При изменении маршрута (location.pathname
) вызывается
useEffect
(в зависимости от location.pathname
),
auth
обновляется (через setAuth
),
refresh
обновляется (в зависимости от auth
),
useEffect
вызывается снова (в зависимости от refresh
), и затем это продолжается и продолжается.
Рекурсивные зависимости между auth
и refresh
вызывают это бесконечное l oop. Как это можно решить?