Angular 4应用程序状态管理[关闭]
Posted
技术标签:
【中文标题】Angular 4应用程序状态管理[关闭]【英文标题】:Angular 4 application state management [closed] 【发布时间】:2018-08-15 10:57:27 【问题描述】:我将尝试将这个问题更多地表述为一个问题而不是一个讨论点。
我正在构建一个 Angular 4 + Spring 应用程序,但我遇到了状态管理问题。应用功能包括登录、交互式地图、带有设置的子页面等。
我的问题: 例如,用户登录,使用交互式地图执行某些操作(更改显示的地图图层或在地图上放大),然后转到子页面或完全从应用程序中注销。 期望的功能是,下次用户登录时,他/她上次所做的事情也将出现在这一次。
我做了一些研究,目前我看到了 3 个选项:
-
使用 cookie 的前端方法
使用包含这些值的 API 的后端方法
Redux
此时我不确定我应该采取哪种方法..
【问题讨论】:
评论“用户下次登录”有点不清楚,你的意思是如果用户登录,比如说两周后? @Alex 可能是十分钟,也可能是两周。在什么情况下这很重要?我只能想象 cookie/本地存储过期。 好吧,如果在两者之间清除本地存储怎么办?如果用户从另一台计算机登录怎么办?最安全的选择是使用后端(?),但这当然取决于您的情况。我最初的问题有点不清楚,抱歉:) 好的,是的,这是一个很好的观点。谢谢! 【参考方案1】:如果你想为用户永久存储数据,最简单的方法是把它们放到浏览器的localStorage中。这样,您可以在加载组件时检索用户数据。为此,您只需执行以下操作:
//Put data to local storage
localStorage.setItem('userData', JSON.stringify(data));
//Get data from local storage
let userData = JSON.parse(localStorage.getItem('userData'))
redux 方法的问题是,如果你重新加载你的应用程序,你的节省就会消失。
另外,涉及后端的方法也不是最好的主意。因为您对后端有额外的调用,所以需要新表来保存每个用户的数据等。
【讨论】:
以上是关于Angular 4应用程序状态管理[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 2/4/6 应用程序中管理状态的最佳实践
在 Angular 中使用 ngrx 进行状态管理时,控制台记录状态数据