1

这是我的代码:

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 中是必需的。

4

0 回答 0