Ale*_*Kim 9 typescript reactjs
interface Crumb {
title: string;
url: string;
}
interface Crumbies {
crumbsArray: Crumb[];
}
// component
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>([]);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
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'.
Run Code Online (Sandbox Code Playgroud)
如何为useState
钩子中的空数组提供正确的类型?
更新 1
const Breadcrumbs: React.FC<Crumbies> = ({ crumbsArray }) => {}
Run Code Online (Sandbox Code Playgroud)
这就是为什么我创建了另一个接口Crumbies
来 wrap Crumb
。有没有更好的方法来解决这个问题?
tud*_*ely 22
Crumbies 接口要求你传递一个带有 crumbsArray 字段的对象:
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>({crumbsArray: []});
Run Code Online (Sandbox Code Playgroud)
如果你只想拥有一个不需要创建新界面的 Crumb 数组,你可以简单地在 useState 中完成:
const [breadcrumbs, setBreadcrumbs] = useState<Crumb[]>([]);
Run Code Online (Sandbox Code Playgroud)
这将用一个空数组初始化它。
归档时间: |
|
查看次数: |
6849 次 |
最近记录: |