我正在使用MERN堆栈和Redux。当用户登录时,我有一个jwtToken保存到本地存储中。我有一个提交信息的表单,该表单上的属性之一是作者,我想自动使用登录用户的ID来填充。您需要记录此表格,以便信息始终存在。有人知道我该怎么做吗?这就是我现在所拥有的,但是它不起作用。除了可以保存在本地存储中之外,还可以通过全局状态访问它,但是我又真的不知道如何访问它,或者哪个更好使用。
class AddSubject extends Component {
constructor() {
super();
const user = localStorage.getItem("jwtToken");
this.state = {
title: "",
summary: "",
description: "",
author: user._id,
errors: {},
};
}
答案 0 :(得分:2)
您需要解码令牌并获取user_id。试试这个:
const jwt_decode = require('jwt-decode');
class AddSubject extends Component {
constructor() {
super();
const token = localStorage.getItem("jwtToken");
const data = jwt_decode(token);
this.state = {
title: "",
summary: "",
description: "",
author: data.user._id,
errors: {},
};
}
答案 1 :(得分:0)
我不确定,但是它可以帮助您:
class AddSubject extends Component {
constructor() {
super();
this.state = {
title: "",
summary: "",
description: "",
author: localStorage.getItem("jwtToken")._id || '',
errors: {},
};
}
答案 2 :(得分:0)
由于您正在使用redux进行数据管理,因此最好在应用程序初始化期间将已解码的令牌详细信息从localStorage存储到redux存储。这样,用户信息就可以在全球范围内使用,并且每次安装组件时都不需要访问本地存储,其他需要显示用户信息的组件也可以从全局存储中共享它。
答案 3 :(得分:0)
在componentDidMount生命周期中:
window.localStorage.getItem(token)