当前位置: 首页 > 知识库问答 >
问题:

如何在React中使用useEffect钩子和Async/Await检索嵌套的JSON数据

陆文康
2023-03-14

我需要与contentful集成,并且很难获得嵌套的JSON数据

当我这样做时,我得到了想要的结果:


  const client = contentful.createClient({
    space: '<space_id>',
    accessToken: '<access_token>'
  });

  useEffect(async () => {
    const response = await client.getEntry(id);
    setHeadLinks(response.fields.slug);
  }, []);

  console.log(headLinks);
useEffect(() => {
  async function fetchData() {
    // You can await here
    const response = await MyAPI.getData(someId);
    // ...
  }
  fetchData();
}, [someId]); // Or [] if effect doesn't need props or state

因此,当我尝试它时,我得到一个错误消息,没有定义响应:

useEffect(() => {
    const fetchData = async () => {
      const response = await client.getEntry(id);
    };
    setHeadLinks(response.fields.slug);
    fetchData();
  }, []);

  console.log(headLinks);

谢谢你的帮助

共有1个答案

斜烈
2023-03-14

您将对SetheadLinks的调用移到了函数之外,因此Response变量不在作用域内。只需要把它移回里面:

useEffect(() => {
  const fetchData = async () => {
    const response = await client.getEntry(id);
    setHeadLinks(response.fields.slug);
  };
  fetchData();
}, []);
 类似资料:
  • 我想在中调用几个异步函数,但我不确定如何包含关键字以等待它们的结果 这给了我 意外的保留字“await” 如何在中异步函数?

  • 想象一下一个按下按钮就能被喜欢的帖子。这个按钮修改了一个远程数据库,所以需要一点时间来将like与特定的帖子相关联。 不喜欢 做了<-------不喜欢做 做完<--------喜欢做完

  • 问题内容: 我正在努力从格式如下的JSON文件中检索一些值: 我尝试了不同的方法(json,gson,jayway- JsonPath),但是我无法从“属性”数组中获取值,只能从第一个数组中获取值。我不知道如何指定“属性”是一个JSONArray而不是一个JSONObject或如何为其设置正确的路径。这是我正在玩的最后一个代码,当它找到一个数组时停止: 我想做的就是获得卢卡斯或布兰登的价值。任何帮

  • 我正在努力从JSON文件中检索一些值,格式如下: 我尝试过不同的方法(json、gson、jayway JsonPath),但我无法从“属性”数组中获取值,只能从第一个数组中获取值。我不知道如何指定“attribute”是JSONArray而不是JSONObject,也不知道如何设置它的正确路径。这是我玩的最后一个代码,它在创建数组时停止: 我想做的是得到卢卡斯或布兰登的价值观。任何帮助都将不胜感

  • 我在useeffect钩子上得到以下错误。 React Hook use效应有一个缺失的依赖项:当前页面。要么包含它,要么删除依赖array.eslintreact-钩子/穷举-deps 你知道我为什么会得到这个吗? }

  • 当类组件的输入道具相同时,可以使用PureComponent或ShouldComponentUpdate来避免呈现。现在,您可以通过将函数组件包装在react.memo中来对它们进行同样的处理。 所期望的: 我希望只有当模态可见时才呈现模态(由this.props.show管理) 对于类组件: 如何在功能组件中使用?在modal.jsx中? 相关代码: 功能组件modal.jsx(我不知道如何检查