Thu*_*azi 7 typescript reactjs react-hooks
const res = {
results: {
documents: [
{
suggestion: 'tes1',
},
{
suggestion: 'test2',
},
{
suggestion: 'test3',
},
{
suggestion: 'test4',
},
],
},
meta: {
request_id: '0e6aa4da',
},
};
Run Code Online (Sandbox Code Playgroud)
我想将“res”数据设置到 useState() 中。
所以我创建了接口:
interface IResult {
documents: [
{
suggestion: string;
}
];
}
Run Code Online (Sandbox Code Playgroud)
这就是我的 useState 的样子:
const [querySuggestionResult, setQuerySuggestionResult] = useState<IResult[]>(
[]
);
Run Code Online (Sandbox Code Playgroud)
我想将这个json文件(响应表单API)设置到useState中,所以我尝试了
setQuerySuggestionResult([{documents: res.results.documents}]);
Run Code Online (Sandbox Code Playgroud)
我也这样尝试过
setGuerySuggestionResult(res.results.documents);
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下如何将对象数组设置为 useState 吗?
我发现使用Array泛型类型(Array<T>)的最简单方法:
interface Foo {
id: string;
}
const [list, setList] = useState<Array<Foo>>([]);
Run Code Online (Sandbox Code Playgroud)
您还可以指定数组文字 ( T[]):
const [listAlt, setListAlt] = useState<Foo[]>([]);
Run Code Online (Sandbox Code Playgroud)
// edit: another way using `readonly`
const [readonlyList, setReadonlyList] = useState<readonly Foo[]>([]);
Run Code Online (Sandbox Code Playgroud)
请注意,要使用readonly,使用Array<...>将不起作用(即readonly Array<Foo>不会起作用)。您必须使用该readonly Foo[]符号。
小智 0
是否有可能接口定义不正确?不应该是这样的吗?:
interface IResult {
documents: {
suggestion: string;
}[];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8969 次 |
| 最近记录: |