我阅读了有关浏览器历史记录的信息,并且我了解我无权访问历史记录对象数组,甚至无法访问它们。但是,我的任务是排除在历史记录中添加参数化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不应成为历史。 有任何想法吗?谢谢!
答案 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上也有类似的帖子
希望这会有所帮助!