Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将动态对象数组的类型声明为react state?_Reactjs_Typescript - Fatal编程技术网

Reactjs 如何将动态对象数组的类型声明为react state?

Reactjs 如何将动态对象数组的类型声明为react state?,reactjs,typescript,Reactjs,Typescript,我需要声明一个对象数组,但与StackOverflow上的其他答案不同,我的对象在运行时是动态的 例如 可能的 [{id:1,random1:1,random1:1,random1:1}] 可能的 [{id:2,p:p2,p2:o2}] 我有数据:{}[]但是我把any放在哪里 const [data, setData] = useState({ data: {}[], isFetching: false }); 或者我可以用一种方式来定义它,我可以说总是有一个id:string索引,但其余的

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

例如

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

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

我有数据:{}[]但是我把any放在哪里

const [data, setData] = useState({ data: {}[], isFetching: false });
或者我可以用一种方式来定义它,我可以说总是有一个id:string索引,但其余的可以是任意的

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

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

您可以声明辅助类型,以指定动态结构并保持代码整洁:

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