Reactjs Typescript从React render props中的元组推断类型
我想从我的Reactjs Typescript从React render props中的元组推断类型,reactjs,typescript,Reactjs,Typescript,我想从我的fetchData数组推断类型,这样我传递给子对象的参数就可以正确地键入 import * as React from 'react'; interface DataSource { dataSource: () => Promise<unknown>, } interface Data { data: unknown, } interface Props{ fetchData: DataSource[], children: (...data:
fetchData
数组推断类型,这样我传递给子对象的参数就可以正确地键入
import * as React from 'react';
interface DataSource {
dataSource: () => Promise<unknown>,
}
interface Data {
data: unknown,
}
interface Props{
fetchData: DataSource[],
children: (...data: any[]) => React.ReactNode;
}
interface State {
data: Data[];
}
const Placeholder : React.FC<Props> = (props) => {
const [state, setState] = React.useState<State>({
data: [],
});
const getAllData = async () => {
const result = await Promise.all(props.fetchData.map((item) => item.dataSource()));
return result as Data[];
};
const fetchData = async () => {
const data = await getAllData();
setState({
data,
});
};
React.useEffect(() => {
fetchData();
}, []);
const {
data
} = state;
const { children } = props;
return (
{children(...data)}
);
};
import*as React from'React';
接口数据源{
数据源:()=>承诺,
}
接口数据{
数据:未知,
}
界面道具{
fetchData:DataSource[],
子项:(…数据:any[])=>React.ReactNode;
}
界面状态{
数据:数据[];
}
常量占位符:React.FC=(道具)=>{
常量[状态,设置状态]=React.useState({
数据:[],
});
const getAllData=async()=>{
const result=wait Promise.all(props.fetchData.map((item)=>item.dataSource());
返回结果作为数据[];
};
const fetchData=async()=>{
常量数据=等待getAllData();
设定状态({
数据,
});
};
React.useffect(()=>{
fetchData();
}, []);
常数{
数据
}=国家;
const{children}=props;
返回(
{子(…数据)}
);
};
在以下示例中:
// const fetchCategories: () => Promise<Category[]>
// const fetchRoles: () => Promise<Role[]>
<PlaceHolder fetchData={[{dataSource: fetchCategories }, {dataSource: fetchRoles}]}>
{(categories /* right now 'categories' type is 'any' but I want to infer type
Category[] from 'fetchCategories' */,
roles /* same as categories */) => (
<CreateCategory categories={categories} roles={roles} />
)}
</PlaceHolder>
//const fetchCategories:()=>Promise
//const fetchRoles:()=>Promise
{(categories/*现在'categories'类型是'any',但我想推断类型
“fetchCategories”中的类别[]*/,
角色/*与类别相同*/)=>(
)}
可能子项:([Category[],Roles[])=>React.ReactNode;
。此外,如果我没有弄错的话,子项应该是ReactNode
,但您可以将其作为常规函数使用。@MoshFeu那么该组件如何保持通用性?可能子项:([Category[],Roles[]))=>React.ReactNode;
。此外,如果我没有弄错的话,子项应该是ReactNode
,但您可以将其作为常规函数使用。@MoshFeu那么该组件如何保持通用性?