【发布时间】:2021-01-27 19:04:01
【问题描述】:
https://ibb.co/dsNrnPQ -- 错误截图
我遇到了异步事件的问题。 登录站点时,当 locale-storage 尚未准备好时。我不能让它异步。 刷新页面后,问题就消失了。
未处理的拒绝 (SyntaxError):JSON 中位置 0 处的意外标记 u
字符串中的问题
const userData = await userDataGetter();
export function setBalanseFetch(){
return async dispatch => {
const userData = await userDataGetter();
const userID = await userData.userId;
try{
const respone = await axios.post('/api/profile', {userID})
const json = await respone["data"];
const FetchBalanse = json.items[0].balanse;
dispatch( {type: FETCH_BALANSE, payload: Number(FetchBalanse)})
}catch(e){
console.log(`Axios spend balanse request failed: ${e}`);
}
}
}
代码函数userDataGetter
async function userDataGetter(){
const userData = await JSON.parse(localStorage.userData);
return userData;
}
export default userDataGetter
【问题讨论】:
-
能否请您从本地存储中获取哪些数据,因为您没有从本地存储中正确获取数据,我的意思是 => const userData = await JSON.parse(localStorage.getItem( "keyName");
-
这样我得到了 jwt 令牌和用户 ID。此代码有效,仅在授权后第一次登录时出现问题,同时将数据添加到商店并且我想获取它。刷新页面后,问题就消失了。
-
尽量不要让 userDataGetter 异步,就像这个函数 userDataGetter(){ const userData = JSON.parse(localStorage.userData);返回用户数据;并且当你尝试访问它时,试试这个 const userData = userDataGetter(); const userID = userData.userId;
标签: javascript reactjs redux promise async-await