如何在nextjs中检测引用页面url

问题描述 投票:0回答:1

在页面中,我使用

router.push('destination-url')
将用户重定向到外部链接。

我需要检查用户是否从我已经将其重定向到的页面单击返回。 如果用户来自外部链接,他们不得再次访问此页面(防止重复重定向到同一目的地)。

换句话说:只有当用户来自特定的内部页面时,我才需要将用户重定向到外部链接。

useEffect(() => {
  if (window) {
    if (router.isReady) {

      // --- HERE I NEED TO CHECK IF USER CLICKED BACK FROM THE EXTERNAL URL THAT I ALREADY REDIRECTED THEM TO ---

      getLinkAddress({id: router.query.id, price: router.query.price}).then((r1) => {
        if (r1.link_address) {
          setFound(true);
          router.push(r1.link_address).then();
        } else {
          setFound(false);

          setTimeout(() => {
            router.back();
          }, 3000);
        }
      });
    }
  }

  return () => { };
}, [router.query]);
javascript reactjs redirect next.js browser-history
1个回答
0
投票

你也许可以试试这个:

useEffect(() => {
  if (window && router.isReady) {

    const redirectedFlag = sessionStorage.getItem('redirectedFlag');

    if (!redirectedFlag) {

      getLinkAddress({ id: router.query.id, price: router.query.price }).then((r1) => {
        if (r1.link_address) {
          setFound(true);

          sessionStorage.setItem('redirectedFlag', 'true');

          router.push(r1.link_address).then();
        } else {
          setFound(false);

          setTimeout(() => {
            router.back();
          }, 3000);
        }
      });

    } else {
      console.log("User is coming back from the external link");
    }
  }

  return () => { };
}, [router.query]);

© www.soinside.com 2019 - 2024. All rights reserved.