严格模式下的 Angular 和本地存储

Posted

技术标签:

【中文标题】严格模式下的 Angular 和本地存储【英文标题】:Angular and Local Storage in strict mode 【发布时间】:2021-11-13 07:23:14 【问题描述】:

我正在使用 Angular 12,它会自动为您的项目添加严格模式。我正在通过教程在我的项目中设置身份验证,但严格模式不允许我像教程中那样设置它。我正在阅读本教程...https://www.positronx.io/full-angular-7-firebase-authentication-system/

这行代码不行……

JSON.parse(localStorage.getItem('user'));

我的文本编辑器似乎喜欢这种替代方式...

JSON.parse(localStorage.getItem('user') || '');

但是,该替代行似乎无法按照教程的预期工作。比如……

如果我使用这个 getter 函数来检查用户是否登录,它会返回 true。即使没有人登录。

get isLoggedIn(): boolean 
        const user = JSON.parse(localStorage.getItem('user') || '');
        return (user !== null) ? true : false;
    

所以我在这里有点迷路,正在寻找一种在严格模式下使用 localStorage 的方法。我知道我可以简单地禁用 Angular 中的严格模式,但我试图不这样做。请注意,我仍然是一个新手程序员,也许我什至误解了这行代码在幕后所做的事情。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

这是一个更好的解决方法:

const user = JSON.parse(localStorage.getItem('user') || 'null')

【讨论】:

【参考方案2】:

解析方法的参数类型为字符串,localStorage.getItem('user') 将返回字符串或null

所以您的文本编辑器建议您使用逻辑或 (||) 来分配用户属性

这意味着如果 JSON.parse(localStorage.getItem('user') return null 使用第二个字符串意味着''

所以你的用户属性值为空对象,空对象不为空;

你可以这样做

const localUser = localStorage('user');
if(localUser) 
    const user = JSON.parse(localUser);
    return true;
 else
    return false;

【讨论】:

【参考方案3】:

如果找不到项目,Localstorage 将返回 null。 试试这个:

get isLoggedIn(): boolean 
        const user = JSON.parse(localStorage.getItem('user') || null);
        return (user !== null) ? true : false;
    

【讨论】:

以上是关于严格模式下的 Angular 和本地存储的主要内容,如果未能解决你的问题,请参考以下文章

安全的本地存储 Angular 6

Ionic/Angular:在本地存储中读写数组

Angular - 存储永久用户信息的位置(本地存储除外)

MySQL-存储引擎-创建表-字段数据类型-严格模式-字段约束-键-02

HTML5 本地存储 Angular 2

Angular 6:将数据保存到本地存储