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

如何解构来自useFetch的对象?

公羊俭
2023-03-14

一份关于我问题的文件

import { useParams } from 'react-router-dom';
import { useFetch } from '../../hooks/useFetch';
import { URL } from '../../util/fetchURL';

export default function Recipe() {
  const { id } = useParams();

  const { data: recipe, isPending, error } = useFetch(`${URL}/${id}`);

  return (
    <div className='recipe'>
      {error && <p className='error'>{error}</p>}
      {isPending && <p className='loading'>loding...</p>}

      {recipe && (
        <>
          <h2 className='page-title'>{title}</h2>
          <p>Takes {cookingTime} to cook.</p>
          <ul>
            {ingredients.map((ing) => (
              <li key={ing}>{ing}</li>
            ))}
          </ul>
          <p className='method'>{method}</p>
        </>
      )}
    </div>
  );
}

所以基本上,我有一个自定义的useFetch钩子,可以返回一些数据和其他东西。

在“recipe”变量中,我有一个由“title、cookingTime、method”等组成的对象。

我的问题是,如何解构这个配方对象为:

  const {title, cookingTime, method, ingredients} = recipe

如果我把它放在useFetch钩子下面,这段代码就不起作用了,因为起初,它在进入useFetch内部的use效应钩子之前是空的,有什么想法吗?

共有1个答案

澹台景辉
2023-03-14

我会制作另一个组件,也许称之为RecipeData,您可以将获取结果中的配方作为道具传递下来,并且仅在数据存在时才进行渲染。

const RecipeData = ({ recipe }) => {
  const {title, cookingTime, method, ingredients} = recipe;
  return (<>
    <h2 className='page-title'>{title}</h2>
    <p>Takes {cookingTime} to cook.</p>
    ...
  );
};
export default function Recipe() {
  const { id } = useParams();

  const { data: recipe, isPending, error } = useFetch(`${URL}/${id}`);
  return (
    <div className='recipe'>
      {error && <p className='error'>{error}</p>}
      {isPending && <p className='loading'>loding...</p>}

      {recipe && <RecipeData recipe={recipe} />}
    </div>
  );
}
 类似资料:
  • 如何使用实现以下功能? 这是完全不一样的,我实际上如何解决?

  • 问题内容: 我要运行一个Node.js进程,因为它正在检查Redis服务器是否有新弹出的东西。 另一个进程将不定期地进行推送,而Node进程将尝试弹出任何进来的消息。Node进程将保持运行。 谁能指出我的正确方向? 我正在尝试弄清楚如何监听此类事件。当然,我可以将其弹出一次,但是如何让Node进程继续侦听Redis服务器上的任何内容? 问题答案: 您将要使用阻止流行音乐:http : //redi

  • 以前在这里可能会问过类似的问题,但我运气不好,我想知道如何从json字符串下面提取特定对象,如,然后构造。但是,有一个转折,下面的属性之一是一个随机数,可以是任何东西!!! 你知道我该如何做到这一点吗?请最好使用Jackson JSON解析器/或者GSON?

  • 我只想从表单输入中获取字符串,将其分配给dbUser对象的address字段,并将该对象发送给save()方法。 我的ftl文件中试图满足这种情况的部分:

  • 是否有任何工具可以转储旧一代的JVM堆? 换句话说,我如何判断一个物体是来自年轻一代还是老一代?

  • 问题内容: 信封:Akka 2.1,scala版本2.10.M6,JDK 1.7,u5 现在是我的问题:我有: 现在在第一行中,我有一个Future对象的Future,有什么方法可以在不阻塞当前线程的情况下将其转换为Future? Akka有什么方法吗?据我检查,我还没有发现…第一次发帖....不好意思的格式和组织…:〜P 问题答案: 简短答案(英语):flatMap dat sh!t 较短的答案