【问题标题】:Typescript React cant find property inside objectTypescript React无法在对象内找到属性
【发布时间】:2021-05-31 09:59:03
【问题描述】:

抱歉标题混乱,但我不知道如何更好地命名它。

我正在从食物 api 中获取一些数据并将其存储到一个状态中。

  const [data, setData] = useState<null | {}>(null);

上面的有状态变量被初始化为null,然后在获取完成后变成一个对象setData(apiData),它有一个名为餐的属性,它是一个对象数组

我正在尝试将获取的数据传递给一个名为 Card 的组件,但我得到了这个 错误: " 属性 'meals' 不存在于类型 '{}' 上"

  data !== null && <Card data={data?.meals} />

我认为它可能无法识别对象上的属性“meals”,因为当它尝试访问它时数据没有完成获取,所以我决定检查数据是否不等于 null,但这也不起作用...

知道我做错了什么吗?我是打字稿的新手。 提前谢谢你。

【问题讨论】:

    标签: reactjs typescript typescript-typings


    【解决方案1】:

    {} 类型的意思是“一个没有属性的对象”。因此,您是说它没有 meals 属性,也没有任何其他属性。您需要提供与数据外观相匹配的类型。我不确切知道该类型会是什么样子,因此您需要填写它的属性,但我编写的一些属性的示例是:

    interface Meal {
      mealId: string;
      calories: number;
    }
    
    interface Data {
      id: string;
      meals: Meal[];
    }
    
    // ... used like:
    const [data, setData] = useState<null | Data>(null);
    
    // ... and:
    data !== null && <Card data={data.meals} />
    

    【讨论】:

    • 嗯,现在我正在考虑它是有道理的。我不知道怎么写。我会试一试,让你知道。谢谢你的回答
    猜你喜欢
    • 2018-12-02
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2020-02-08
    • 2020-08-17
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多