我需要声明一个对象数组,但是与StackOverflow上的其他答案不同,我的对象在运行时是动态的。
示例
可能 [{“ id”:“ 1”,“ random1”:“ 1”,“ random1”:“ 1”,“ random1”:“ 1”}]
可能 [{“ id”:“ 2”,“ p”:“ p2”,“ p2”:“ o2”}]
我有数据:{} [],但是我应该放在哪里?
const [data, setData] = useState({ data: {}[], isFetching: false });
或者我可以这样定义的方式:我可以说总是有一个id:字符串索引,而其余的可以是任何。
像这样的东西,这是无效的,但也许像这样的东西?
const [data, setData] = useState({ data: { [index: string]: any }[];, isFetching: false });
答案 0 :(得分: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 }[]));