javascript - 不要在单击浏览器的后退按钮时重新加载组件 - Angular
问题描述
我正在使用 Angular 8.x
From Home 的新闻网站上工作,当用户向下滚动页面并单击新闻链接时,它会将用户带到新闻详细信息页面。现在点击“浏览器的”后退按钮,用户来到“主页”页面,但页面正在重新加载并滚动到顶部。
如何防止主页在单击“返回”按钮时重新加载?
解决方案
您可以创建一个服务,并在您第一次从 api 获取数据时将其缓存在服务中的一个变量中。
下次重新加载新闻列表组件时,它将从服务变量中检查。如果未找到,则 api 调用,否则从服务变量中获取。
像这样的东西。
export class NewsService {
newsList: News[];
getSupportedBrowsers(): Observable < SupportedBrowser[] > {
if (this.newsList) {
return new Observable < News[] > ((subscriber: Subscriber < SupportedBrowser[] > ) => subscriber.next(this.newsList));
}
return this.http.get('url').map(response => {
this.newsList = response.json();
return this.newsList;
});
}
}
推荐阅读
- python-3.x - 通过 Flask_socketIO 向客户端发送 openCV 图像会导致 TypeError:ndarray 类型的对象不是 JSON 可序列化的
- reactjs - 我可以在 getStaticProps 中使用 UseEffect 挂钩吗?
- liferay - 使用条款 URL,/portal/terms_of_use 不起作用 - 我收到请求的资源无法找到错误
- python - 使用python从url获取数据并解压
- c# - 如何使用带控制器和不带控制器的路由
- c# - 自动缩放图像和段落以适合文档 iTextSharp
- javascript - Vue router-link 改变元素的样式
- python - 使用带有 SQLite 后端的 asyncio 扩展因版本升级而中断
- python - sqlalchemy 删除表问题
- java - Retrofit 2 在模拟器上工作,但不在实体手机上