首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应解析localStorage问题(未知(承诺) SyntaxError:意外令牌'u',“函数st”.是无效的JSON)

响应解析localStorage问题(未知(承诺) SyntaxError:意外令牌'u',“函数st”.是无效的JSON)
EN

Stack Overflow用户
提问于 2022-11-14 17:30:55
回答 1查看 23关注 0票数 0

我正在学习反应的诀窍,并试图让我的应用程序检查本地存储之前,提出一个获取请求。很确定我的代码是可靠的,但是我的console.log中一直有这个错误

代码语言:javascript
运行
复制
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中获取和显示图像。有人能帮忙吗?

代码语言:javascript
运行
复制
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");
    }
  };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-14 17:37:36

check似乎不是一个json。在分配给州之前检查它是否是一个json

代码语言:javascript
运行
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74435656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档