我正在尝试在我的React应用程序中创建一个表单组件,我想向它传递一个字段对象,然后在组件状态下对其进行处理。状态对象被传递给render函数,这样我就可以使用它来构建表单。
fields
的类型为T
,然后在各处使用,渲染函数作为fields
传递给T
,setValue
函数使用{{1 }}作为field
。显然,这显然需要从传递给keyof T
的值中推断出T
。
fields
我只是想知道如何从函数中将interface FormProps<T = {}>{
fields: T
children: <T>({
fields,
setField
}: {
fields: T
setField: (field: keyof T, value: any) => void
}) => React.ReactNode
onValid: (data: T) => void
}
export const Form: React.SFC<FormProps> = function<T>({children: render, fields, onValid}: FormProps<T>){
const [data, setData] = useState(fields)
const setField = (field: keyof T, value: any) => {
let newData = data
newData[field] = value
setData(newData)
onValid(newData)
}
return render({
fields: data,
setField
})
}
转换为T
的{{1}}类型参数