参考代码沙盒(https://codesandbox.io/s/eager-volhard-qgr34)
我为Tabs组件提供了一个自定义包装器。它所具有的只是一个withStyles HOC,它包装了自定义样式。所有道具均按原样通过。
通常我希望onChange类型保持不变
onChange?: (event: React.ChangeEvent<{}>, value: any) => void;
但是当使用组件并传递onChange道具时,出现以下错误
Type '(event: ChangeEvent<{}>, newValue: string) => void' is not assignable to type '((event: ChangeEvent<{}>, value: any) => void) & ((event: FormEvent<HTMLButtonElement>) => void)'
有关完整示例,请参见上面的codeandbox链接。 index.tsx是具有错误的自定义组件。 index2.tsx只是使用纯Tabs组件作为健全性检查。
用法是:
...
const [filterValue, setFilterValue] = React.useState('all')
function handleChangeFilter(event: React.ChangeEvent<{}>, newValue: string) {
setFilterValue(newValue)
}
return (
<FilterTabs value={filterValue} onChange={handleChange}>...</FilterTabs>
)