我创建了一个自定义挂钩,非常简单,用于获取和返回数据。
useFetchData
import { useEffect, useState } from "react";
export const useFetchData = (
URI: string
): [any[] | null, boolean, string | null] => {
const [data, setData] = useState<any[] | null>(null);
const [loading, setLoading] = useState<boolean>(true);
const [errorMessage, setErrorMessage] = useState<string | null>(null);
useEffect(() => {
const fetchData = async () => {
try {
const res = await fetch(URI);
setData(await res.json());
setTimeout(() => {
setLoading(false);
}, 2000);
} catch (err) {
setErrorMessage(err.message);
}
};
if (!URI) return;
fetchData();
}, [URI]);
return [data, loading, errorMessage];
};
使用TypeScript,我想指定属于data
的any[]
类型至少应该有一个属性id: string | number
。实现这一点的最佳方法是什么?
只需使用{id: string | number}[]
。任何具有id属性的对象都可以分配给该类型,因为它们都是其子类型。