Проект на Next.js app v14.
Как определить предыдущий адрес страницы, чтобы вернуться назад, если это - страница моего сайта, или перейти на главную, если предыдущая страница - чужая (например, пользователь сразу ввел в поиске www.my-site/login)?
1) document.referrer остается пустым при переходе с чужой страницы на мой сайт и при переходе по страницам сайта.
document.referrer.includes(window.location.origin) - всегда false, т.к. document.referrer пустой.
"use client";
import { usePathname } from 'next/navigation';
import { useEffect} from 'react';
export default function IsExternal() {
const pathname = usePathname();
useEffect(() => {
console.log("document.referrer", document.referrer); // всегда пустой
const cameFromExternalSite = !document.referrer.includes(window.location.origin); // всегда true
if(cameFromExternalSite){
sessionStorage.setItem("prevPath", "external" );
}
console.log("Внешний переход:", cameFromExternalSite); // всегда true
}, [pathname]);
return null;
}
2) пробовала sessionStorage, но не смогла получить предыдущую страницу
"use client";
import { usePathname, useSearchParams } from 'next/navigation';
import { useEffect, useRef } from 'react';
export default function TrackPreviousPage() {
const pathname = usePathname();
const prevPath = useRef(null);
const previousPage = document.referrer;
const currentOrigin = window.location.origin;
useEffect(() => {
if (prevPath.current) {
sessionStorage.setItem("prevPath", prevPath.current); // записывает текущий адрес, а не предыдущий
}
prevPath.current = pathname;
}, [pathname])
return null
};