reactjs - TypeScript kullanarak useState içinde bir Nesne dizisi nasıl ayarlanır
const res = {
results: {
documents: [
{
suggestion: 'tes1',
},
{
suggestion: 'test2',
},
{
suggestion: 'test3',
},
{
suggestion: 'test4',
},
],
},
meta: {
request_id: '0e6aa4da',
},
};
O 'res' verisini useState() içine yerleştirmek istiyorum.
Yani arayüz oluşturdum:
interface IResult {
documents: [
{
suggestion: string;
}
];
}
useState'im böyle görünüyor:
const [querySuggestionResult, setQuerySuggestionResult] = useState<IResult[]>(
[]
);
Bu json dosyasını (API yanıt formu) useState'e koymak istiyorum, bu yüzden denedim
setQuerySuggestionResult([{documents: res.results.documents}]);
Ben de öyle denedim
setGuerySuggestionResult(res.results.documents);
aldığım bir hata
Biri bana bir nesneler dizisini useState ile nasıl ayarlayacağımı açıklayabilir mi lütfen !!
Cevap #1
En kolay yolun bir Array jenerik tipi (Array<T>) kullanmak olduğunu düşünüyorum:
interface Foo {
id: string;
}
const [list, setList] = useState<Array<Foo>>([]);
Ayrıca bir dizi sabiti (T[]) de belirtebilirsiniz:
const [listAlt, setListAlt] = useState<Foo[]>([]);
// edit: another way using `readonly`
const [readonlyList, setReadonlyList] = useState<readonly Foo[]>([]);
const [otherReadonlyList, setOtherReadonlyList] = useState<ReadonlyArray<foo>>([]);
Dikkat edin ki readonly kullanmak için Array<...> kullanmak işe yaramayacaktır (yani, readonly Array<Foo> işe yaramayacaktır). readonly Foo[] gösterimini veya ReadonlyArray<Foo> kullanmalısınız.
Cevap #2
Arayüz tanımının yanlış olması mümkün mü? Bunun gibi bir şey olmamalı mı?
interface IResult {
documents: {
suggestion: string;
}[];
}
