javascript - 从嵌套的 json Api 迭代数据时遇到问题
问题描述
我正在获取数据
我有一个品牌属性,我正在尝试显示它,我正在尝试实现一个点击setCurrentSelectedBrand
逻辑来显示该特定品牌[对象]的数据。目前我TypeError: Cannot read property 'brand' of undefined
在主组件中遇到错误,我不知道为什么
数据
[{
"a_class":[
{
"brand":"A-class",
"id":"1",
"year":"2015"
"price":"12665"
...
"engine_spec":{
...
}
...
}],
"b_class":[
{
"brand":"B-class",
"id":"2",
"year":"2016"
"price":"12665"
...
"engine_spec":{
...
}
...
}],
}
]
主要部件
const Cars = () => {
const { cars, handleSelectBrand} = useContext(CarsContext)
return (
<div>
{Object.keys(cars).map((key:any, index)=>{
let brands:any = cars[key];
return (
<div key={key} onClick={() => handleSelectBrand(key)} className='brand__list' >
{brands[0].brand}
</div>
);})}
<CarsDetails />
</div>
)
}
export default Cars
语境
declare module 'axios' {
export interface AxiosResponse<T = any> extends Promise<T> {}
}
export const CarsProvider:React.FC <IProps> = ({ children } ) => {
const [isLoading, setIsLoading] = useState(false);
const [cars, setCars] =useState< any | ICars[] >([])
const [brands, setBrands] = useState([])
const [currentSelectedBrand, setCurrentSelectedBrand] = useState('')
const handleSelectBrand = React.useCallback((brand) => {
return setCurrentSelectedBrand(cars[brand]);
},[cars])
useEffect(()=>{
const fetchData = async () => {
setIsLoading(true);
const response = await api.get('/cars', {
});
setIsLoading(false)
setCars([...response.data]);
setCurrentSelectedBrand(response[Object.keys(response)[0]]);
console.log(response.data)
};
fetchData()
},[brands, cars])
解决方案
推荐阅读
- php - PHP测试简单的对象构造函数
- vue.js - 通过 props 传递的 Vue.js 大数据速度很慢
- excel - 如果在移动匹配的单元格时找不到,则使用匹配为单元格着色
- java - 当我更改一个活动的组件的 ID 时,它也会更改其他活动的组件的 ID
- git - 获取 git-lfs 文件的旧版本
- vue.js - 用新订单的数量计算总价
- excel - Excel-vba:带有 vba 变量的 Worksheetfunction.CountIfs
- c# - 在 Xamarin 中实现计步器
- java - 如何用鼠标选择 JTable 的列名
- google-vision - Google AutoML - 检测图像上的表单字段