【发布时间】:2021-04-02 01:09:33
【问题描述】:
我正在尝试将我的 API 请求移至单独的服务,但遇到了这个问题。
这是我的界面
export interface IProduct {
id: any;
productName: string;
productDescription: string;
productImage: string;
productPrice: any;
categoryId: string;
category: any;
}
这是产品列表的组件
import React, {useEffect, useState} from 'react';
import {IProduct} from "../models"
interface IProps {
products: IProduct[];
}
export const ProductsList: React.FC<IProps> = ({products}) => {
return (
<div className="App">
<ul className="posts">
{products.map((products) => (
<li key={products.id}>
<h3>{products.productName}</h3>
<p>{products.productDescription}</p>
<h2>{products.productPrice}</h2>
</li>
))}
</ul>
</div>
);
}
export default ProductsList;
下一个 Api.tsx 我正在尝试提出请求:
import axios, { CancelTokenSource } from "axios";
import {IProduct} from "../models"
import React from 'react';
export const fetchAllProducts = async (setData: IProduct[]): Promise<IProduct[]> => {
return axios.get<IProduct[]>("https://localhost:5001/api/ShowAllProducts")
.then(response => {return setData = response.data });
}
最后是 APP.tsx
import axios, { CancelTokenSource } from "axios";
import {IProduct} from "./models"
import {ProductsList} from "./components/ProductsList";
import React from 'react';
import {fetchAllProducts} from './services/api';
const defaultProps:IProduct[] = [];
function App() {
const [products, setProducts] = React.useState<IProduct[]>
(defaultProps)
const [loading, setLoading]: [boolean, (loading: boolean) => void] = React.useState<boolean>(true);
const [error, setError]: [string, (error: string) => void] = React.useState("");
return (
<div>
<ProductsList products= {fetchAllProducts(products)}/>
</div>
);
}
export default App;
所以我在产品上的“=”符号之前返回 app.tsx 中的错误。
上面写着:
Type 'Promise<IProduct[]>' is missing the following properties from type 'IProduct[]': length, pop, push, concat, and 28 more.ts(2740)
ProductsList.tsx(6, 5): The expected type comes from property 'products' which is declared here on type 'IntrinsicAttributes & IProps & { children?: ReactNode; }'
【问题讨论】:
-
fetchAllProducts返回 `Promise. You're trying to pass that as a prop, which expects anIProduct[]`。
标签: reactjs typescript axios