我正在学习反应的诀窍,并试图让我的应用程序检查本地存储之前,提出一个获取请求。很确定我的代码是可靠的,但是我的console.log中一直有这个错误
VM79:1 Uncaught (in promise) SyntaxError: Unexpected token 'u', "function st"... is not valid JSON
at JSON.parse (<anonymous>)
at getPopular (Popular.jsx:19:1)
at Popular.jsx:13:1
我想这和我的if/else有关。在实现它之前,一切都很好,但是有了它(从本地主机查看),它就不会从我使用的api中获取和显示图像。有人能帮忙吗?
Popular.jsx
const Popular = () => {
const [popular, setPopular] = useState([]);
useEffect(() => {
getPopular();
}, []);
const getPopular = async () => {
const check = localStorage.getItem("popular");
if (check) {
setPopular(JSON.parse(check));
} else {
const url = "https://api.spoonacular.com/recipes/random";
const apiKey = process.env.REACT_APP_API_KEY;
const res = await fetch(`${url}?apiKey=${apiKey}&number=9`);
const data = await res.json();
localStorage.setItem("popular", JSON.stringify(data.recipes));
setPopular(data.recipes);
console.log("Restore popular");
}
};
发布于 2022-11-14 17:37:36
check
似乎不是一个json。在分配给州之前检查它是否是一个json
const isJson = (str) => {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
const getPopular = async () => {
const check = localStorage.getItem("popular");
if (check && isJson(check)) {
setPopular(JSON.parse(check));
https://stackoverflow.com/questions/74435656
复制相似问题