反应useState空数组类型

时间:2020-02-22 07:01:37

标签: reactjs typescript

interface Crumb {
  title: string;
  url: string;
}
interface Crumbies {
  crumbsArray: Crumb[];
}


// component
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>([]);

我遇到错误:

TS2345: Argument of type 'never[]' is not assignable to parameter of type 'Crumbies | (() => Crumbies)'.   Type 'never[]' is not assignable to type '() => Crumbies'.     Type 'never[]' provides no match for the signature '(): Crumbies'.

如何为useState钩中的空数组提供正确的类型?

更新1

const Breadcrumbs: React.FC<Crumbies> = ({ crumbsArray }) => {}

这就是为什么我创建了另一个接口Crumbies来包装Crumb的原因。有更好的方法吗?

1 个答案:

答案 0 :(得分:11)

称为Crumbies的接口要求您传递带有crumbsArray字段的对象:

const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>({crumbsArray: []});

如果只想拥有一个Crumb数组,而无需创建一个新接口,则只需在useState中完成它即可:

const [breadcrumbs, setBreadcrumbs] = useState<Crumb[]>([]);

这将使用一个空数组对其进行初始化。