如何将一个动态对象的数组的类型声明为反应状态?

问题描述 投票:0回答:1

我需要声明一个对象数组,但与StackOverflow上的其他答案不同,我的对象在运行时是动态的。

举个例子。

可能[{"id": "1", "random1": "1", "random1": "1", "random1": "1"}]

可能[{"id": "2", "p": "p2", "p2": "o2"}]

我有数据。{}[],但我该把any放在哪里?

const [data, setData] = useState({ data: {}[], isFetching: false });

或者我可以用这样的方式来定义,我可以说永远有一个id:字符串索引,但是其他的可以是any。

像这样的东西,是无效的,但也许这样的东西是有效的?

const [data, setData] = useState({ data: { [index: string]: any }[];, isFetching: false });
reactjs typescript
1个回答
1
投票

你可以声明一个辅助类型,以便指定你的动态结构并保持你的代码干净。

type Data = {
  data: { [index: string]: any }[];
  isFetching: boolean;
}
// ...
useState<Data>({ data: [], isFetching: false });
// or
useState({ data: [], isFetching: false } as Data);

鉴于这是React,没有什么能阻止你有两个状态(但我想你不喜欢这样,因为你的实际代码),比如:

const [isFetching, setIsFetching] = useState(false);
const [data, setData] = useState([] as ({ [index: string]: any }[]));
© www.soinside.com 2019 - 2024. All rights reserved.