使用可选链接后。问题 JSON 中位置 0 的意外标记 u
Posted
技术标签:
【中文标题】使用可选链接后。问题 JSON 中位置 0 的意外标记 u【英文标题】:After using optional chaining. Problem Unexpected token u in JSON at position 0 【发布时间】:2022-01-07 00:19:16 【问题描述】:使用可选链后,我收到了这个问题。
JSON 中位置 0 处的意外标记 u
import axios from 'axios'
const BASE_URL = 'http://localhost:5000/api'
const TOKEN = JSON.parse(JSON.parse(localStorage.getItem('persist:root'))?.user)
?.currentUser?.accessToken || null
export const publicRequest = axios.create(
baseURL: BASE_URL,
)
export const userRequest = axios.create(
baseURL: BASE_URL,
headers: token: `Bearer $TOKEN` ,
)
编辑添加:
【问题讨论】:
persist:root
里面是什么?
@SurjeetBhadauriya 它现在是空的,只要我没有登录,程序就不应该在本地存储中获取令牌,这就是我使用 optinal 链的原因。如果我做错了请纠正我
你应该解析两次吗?错误在JSON.parse
内抛出
通过向我们展示您希望在 persist:root
中出现的字符串示例(如果它不为空),我们可以为您提供进一步的帮助。
@s_sldiblood,不需要做两次 JSON.parse。所以只需将您的代码替换为JSON.parse(localStorage.getItem('persist:root'))?.user?.currentUser?.accessToken || null
【参考方案1】:
试试这个:
const TOKEN = JSON.parse(JSON.parse(localStorage.getItem('persist:root'))?.user ?? null)?.currentUser?.accessToken || null;
同理:
const storageItem = localStorage.getItem('persist:root'); // string or null
const parsedObject = JSON.parse(storageItem); // parsed object or null
const parsedUser = JSON.parse(parsedObject?.user ?? null); // parsed user or null
const TOKEN = parsedUser?.currentUser?.accessToken || null; // the token or null
【讨论】:
【参考方案2】:你为什么要解析 persist:root
,这个对象是由 redux-persist
库设置的,它是你的 redux 存储的副本。如果你想从存储中获取任何数据,请在你的 React 组件中使用 useSelector
钩子。
【讨论】:
以上是关于使用可选链接后。问题 JSON 中位置 0 的意外标记 u的主要内容,如果未能解决你的问题,请参考以下文章
实现包罗万象的快速路由解决方案后获取 API 调用失败:位置 0 处 JSON 中的意外令牌 <