Reactjs 接收接口作为参数
我正在学习Typescript,并正在创建一个自定义的React钩子来从api获取数据:Reactjs 接收接口作为参数,reactjs,typescript,Reactjs,Typescript,我正在学习Typescript,并正在创建一个自定义的React钩子来从api获取数据: import { useState, useEffect } from 'react'; import api from '../services/api'; interface RequestProps { url: string; initialLoading: boolean; } interface ResponseProps<T> { data: T,
import { useState, useEffect } from 'react';
import api from '../services/api';
interface RequestProps {
url: string;
initialLoading: boolean;
}
interface ResponseProps<T> {
data: T,
error: boolean,
loading: boolean
}
export const useApiRequest = <T>({ url, initialLoading }: RequestProps): ResponseProps<T> => {
// Response state
const [data, setData] = useState<T>();
const [error, setError] = useState(false);
const [loading, setLoading] = useState(initialLoading);
useEffect(() => {
const fetchApi = async () => {
try {
setLoading(true);
// Fetch data from REST API
const response = await api.get<T>(url);
setLoading(false);
setData(response.data);
} catch (e) {
setError(true);
}
};
// Call async function
fetchApi();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [url]);
return {
data,
loading,
error,
};
};
问题是Typescript在返回语句的数据中给了我一个错误:
TS2322:类型“T |未定义”不可分配给类型“T”。“T”可以用与“T | undefined”无关的任意类型实例化。类型“未定义”不可分配给类型“T”。“T”可以用与“undefined”无关的任意类型实例化。ts(10,5):预期的类型来自属性“data”,该属性在类型“ResponseProps”上声明
我错过了什么
提前谢谢 错误说明了一切,数据
可以在响应之前未定义。数据
用于更新状态(数据
)
因此,尝试如下更改响应类型:
interface ResponseProps<T> {
data: T | undefined,
error: boolean,
loading: boolean
}
接口响应操作{
数据:T |未定义,
错误:布尔,
加载:布尔值
}
哇,我真傻!感谢您对此进行故障排除
interface ResponseProps<T> {
data: T | undefined,
error: boolean,
loading: boolean
}