reactjs - React JS 为传递给映射函数 array.map(item:???) 的数组创建接口
问题描述
有人告诉我为我的 .map 代码创建一个接口,但我不确定我该怎么做,我一直在寻找一段时间,但找不到任何我用### 隔离代码的示例。任何帮助,将不胜感激。
我有更新界面部分但仍然遇到问题
interface ItemCategories{
id: number;
name: string;
categoryImg: string;
}
import React, { FC, useState, useEffect } from "react";
import CategoryButton from "./CategoryButton";
import axios from "axios";
import "../assets/stylesheets/CategoryList.css";
const CategoryList: FC = () => {
const [itemCategories, setItemCategories]: ItemCategories[] = useState([]);
const categorySelection = (categoryType: string) => {
console.log(categoryType);
};
useEffect(() => {
const updateData = async () => {
const results = await axios.request({
method: "get",
url: "http://localhost:3000/categories",
});
setItemCategories(results.data);
};
updateData();
},[]);
return (
<div className="cs-hs-scroll-div">
<div className="cs-category-selection w-100">
{itemCategories.length > 0 ? (
itemCategories.map((itemCategory: ItemCategories) => (
<CategoryButton
key={itemCategory.id.toString()}
textData={itemCategory.name}
id={itemCategory.id}
categoryImgUrl={itemCategory.categoryImg}
onBtnClick={categorySelection}
/>
))
) : (
<div />
)}
</div>
</div>
);
};
export default CategoryList;
解决方案
你需要像下面这样的东西;
interface ItemCategory {
id: string;
name: string;
categoryImg: string;
}
代码中的下一行;
const [itemCategories, setItemCategories]: any[] = useState([]);
您需要将 any 的类型数组更改为 ItemCategory 的数组。像这样;
const [itemCategories, setItemCategories]: ItemCategory[] = useState([]);
地图中单个项目的类型可以更改为;
itemCategory: ItemCategory
推荐阅读
- glob - 使用 glob 模式排除特定文件
- c# - Increase numbers in a string
- android - 播放音乐时 BLE 扫描优先级 [Android]
- spring-boot - Spring-boot 无法识别为第三方库编写的 Koltin 序列化程序
- cgal - 包括无法罚款加载文件:CGAL_TBB_support
- pandas - 在使用 Python 的 DataFrame 中,如何在将属性分组后设置指标
- python - 为什么我不能一次运行 2 个函数?
- middleware - 我们如何在不同的文件中添加 prisma 中间件?
- ios - 在 SWIFT 字符串插值中没有更多上下文的表达式类型不明确
- python - 跟踪树莓派汽车运动