这是我的代码:
import React, {
InputHTMLAttributes,
Component,
ComponentClass,
TextareaHTMLAttributes
} from 'react';
// type TElementType = HTMLInputElement | HTMLTextAreaElement;
// type TAttributesType =
// | InputHTMLAttributes<HTMLInputElement>
// | TextareaHTMLAttributes<HTMLTextAreaElement>;
interface IClassType {
somevalue: string;
}
type TElementType = HTMLInputElement;
type TAttributesType = InputHTMLAttributes<HTMLInputElement>;
const withInput = (Comp: ComponentClass<TAttributesType>): ComponentClass<IClassType> => {
class MyInput extends Component<IClassType> {
private refValue = React.createRef<TElementType>();
componentDidMount() {
console.log('do something');
}
render() {
return (
<>
<Comp
name="someinput"
value="somevalue"
type="text"
ref={ref => {
this.refValue = ref;
}}
/>
</>
);
}
}
return MyInput;
};
export default withInput;
这是 this.refValue = ref 上的错误:
类型'组件<TAttributesType,任何,任何> | null' 不可分配给类型 'RefObject'。类型“null”不可分配给类型“RefObject”。
我上网查了一下,只能找到forwardedRefs的例子。我不需要从我传递的组件中转发 ref,因为 ref 仅在我的 hoc 中是必需的。