reactjs - TypeError : data. map 不是函数,但 data 是数组

标签 reactjs axios

我收到此错误

类型错误:data.map 不是函数

来自以下代码

import React, { useEffect, useState } from "react";
import axios from "axios";

// Import shadcn-ui components
import {
Table,
TableBody,
TableCaption,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";

// Define the expected data structure for a service

interface firmServices {
\_id: string;
service_category: string;
service_name: string;
criticality: string;
service_type: string;
}

const ServicesList = () =\> {
// State to hold the retrieved services as an array
const initialState: firmServices\[\] = \[\];
const \[data, setData\] = useState(initialState);

useEffect(() =\> {
const fetchData = async () =\> {
try {
const response = await axios.get("http://localhost:3500/services");
const servicesData: firmServices\[\] = response.data;

        setData(servicesData);
        console.log(servicesData);
      } catch (error) {
        console.error("Error getting data", error);
        // You might want to set an error state or display an error message to the user
      }
    };
    
    fetchData();

}, \[\]);

return (
\<Table\>
\<TableCaption\>Firm Services\</TableCaption\>
\<TableHeader\>
\<TableRow\>
\<TableHead className="text-left"\>Name\</TableHead\>
\<TableHead className="text-left"\>Criticality\</TableHead\>
\<TableHead className="text-left"\>Type\</TableHead\>
\<TableHead className="text-left"\>Group\</TableHead\>
\</TableRow\>
\</TableHeader\>
\<TableBody\>
{data.map((servicesData) =\> (
\<TableRow key={servicesData.\_id}\>
\<TableCell\>{servicesData.service_category}\</TableCell\>
\<TableCell\>{servicesData.service_name}\</TableCell\>
\<TableCell\>{servicesData.criticality}\</TableCell\>
\<TableCell\>{servicesData.service_type}\</TableCell\>
\</TableRow\>
))}
\</TableBody\>
\</Table\>
);
};

export default ServicesList;

然而,数据是一个数组,如下来自console.log:

{firmServices: Array(6)}firmServices:Array(6)0:{_id: '6545d10db1f1c084db6134ea', service_category: 'Deposites', service_name: 'saving', criticality: 'high', service_type: 'client, internal'}1:{_id: '6545d10db1f1c084db6134eb', service_category: 'Deposites', service_name: 'checking', criticality: 'high', service_type: 'client, internal'}2:{_id: '6545d10db1f1c084db6134ec', service_category: 'Deposites', service_name: 'saving', criticality: 'high', service_type: 'client, internal'}3:{_id: '6545d10db1f1c084db6134ed', service_category: 'Deposites', service_name: 'saving', criticality: 'high', service_type: 'client, internal'}4:{_id: '6545d10db1f1c084db6134ee', service_category: 'Deposites', service_name: 'saving', criticality: 'high', service_type: 'client, internal'}5:{_id: '6545d10db1f1c084db6134ef', service_category: 'Deposites', service_name: 'saving', criticality: 'high', service_type: 'client, internal'}length:6

I have read all the issues posted that I can find most of which point to map.data needing an array, yet the data I have is an array.

任何人都可以为我阐明这一点。

提前致谢

我期望使用 shadcn-ui 中的 Table 来渲染表格

最佳答案

在您的代码中,您没有正确进行状态初始化。

const [data, setData] = useState<firmServices[]>(initialState);

当使接口(interface)使用命名约定时,例如在 I 前面

interface IfirmServices {
  _id: string; 
  service_category: string;
  service_name: string;
  criticality: string;
  service_type: string; 
}

 

const initialState: IfirmServices[] = [];
const [data, setData] = useState<IfirmServices[]>(initialState);

供您引用:

how to set react typescript useState fetch type and using map method

What is the naming convention for interfaces and classes in TypeScript?

关于reactjs - TypeError : data. map 不是函数,但 data 是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77423132/

相关文章:

javascript - 第一次 React,来自 Angular。 CSS 网格?

reactjs - Redux:请求成功或来自组件的错误(使用redux-saga)

javascript - 如何将正文放入 get 请求中?

android - android中通过https返回网络错误的React-native POST请求

reactjs - Redux 工具包和 createAsyncThunk 不适用于 axios 实例

javascript - Axios 总是以无效的 url 运行 .then

reactjs - React 选项卡不会出现在 Chrome 开发者工具中

javascript - 放大图像同时保持鼠标悬停尺寸的 React 组件 - React + Bootstrap

javascript - react 组件与两组 child

reactjs - 在react-native中发送请求 header /授权 axios.post