不要在浏览器历史记录中添加网址

时间:2019-06-14 09:51:10

标签: javascript reactjs browser-history next.js

我阅读了有关浏览器历史记录的信息,并且我了解我无权访问历史记录对象数组,甚至无法访问它们。但是,我的任务是排除在历史记录中添加参数化URL。我的项目中有选项卡,其网址为:

/profile,
/profile?menu=1
/profile?menu=2

我在项目中使用nextjs框架。他的导航代码:

public handleOnClickItem(key: string) {
    const id = '1';
    const href = `/profile?id=${id}&menu=${key}`;
    Router.push(href, href, { shallow: true });
    // tabs are navigated
    Router.onBeforeHistoryChange = (url) => {
        console.log('App is changing to before history change: ', url);
    };
}

我不能将此网址添加到历史记录中吗?我在console.log中得到它。从我对方法的描述中可以了解到,此URL不应成为历史。 有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

这应该解决它:

https://nextjs.org/docs/api-reference/next/router#routerreplace

与next / link中的replace属性类似,router.replace将阻止在历史记录堆栈中添加新的URL条目。

同时要记住,在进行路由时,浅路由选项用于触发/不触发next.js生命周期方法(例如getInitialProps)。

答案 1 :(得分:-1)

一旦您进入网站,就通过AJAX加载内容,并且不要保留更新的URL。

此方法的缺点是您的用户无法为特定页面添加书签(没有永久链接)。在历史记录中,它只会显示不带参数的基本网址。

SO上也有类似的帖子

Check it here

希望这会有所帮助!