这是我使用Field组件的代码:
interface EditProfileFormProps extends FormProps {
defaults: object;
submit: () => {};
initialValues: object;
roles: object[];
specialties: object[];
}
const EditProfileForm: React.StatelessComponent<EditProfileFormProps> = (props: EditProfileFormProps) => {
return (
<Form onSubmit={props.submit}>
<div>
<Field name="firstName" component={FirstName} type="text" />
</div>
<div>
<Field name="lastName" component={LastName} type="text" />
</div>
<div>
<Field name="role" props={{ roles: props.roles }} component={Role} type="select" />
</div>
</Form>
);
};
//FirstName.tsx
export const FirstName: React.StatelessComponent<React.InputHTMLAttributes<HTMLInputElement>> = ({
input,
}: React.InputHTMLAttributes<HTMLInputElement> & WrappedFieldProps) => (
<FormGroup>
<Label for="firstName">First Name</Label>
<Input {...input} type="text" name="firstName" id="firstName" />
</FormGroup>
);
这是我看到的TS错误:
[TS] 输入'{name:“firstName”; component:StatelessComponent&gt ;; type:...'不能赋值给''(IntrinsicAttributes&amp; IntrinsicClassAttributes&gt;&amp; Readonly&lt; {c ...'。
输入'{name:“firstName”; component:StatelessComponent&gt ;; type:...'不能赋值为'IntrinsicAttributes&amp; IntrinsicClassAttributes&GT; &安培; Readonly&lt; {ch ...'。
输入'{name:“firstName”; component:StatelessComponent&gt ;; type:...'不能分配给'Readonly&amp; TextareaHTMLAttributes&GT;”
属性“组件”的类型不兼容。
输入'StatelessComponent&gt;'不能分配给“输入”类型| “选择”| “textarea”| ComponentClass | StatelessComponent ......“。 输入'StatelessComponent&gt;'不能分配给'StatelessComponent'类型。 输入'React.ReactElement | null'不能赋值为'React.ReactElement |空值'。存在两种具有此名称的不同类型,但它们是不相关的。 类型'ReactElement'不能分配给'ReactElement |空值'。 类型'React.ReactElement'不能分配给'React.ReactElement'。存在两种具有此名称的不同类型,但它们是不相关的。 属性“类型”的类型不兼容。 输入'string | React.ComponentClass | React.StatelessComponent'不能赋值为'string | React.ComponentClass | React.StatelessComponent”。存在两种具有此名称的不同类型,但它们是不相关的。
类型'ComponentClass'不能赋值为'string | ComponentClass | StatelessComponent”。
类型'ComponentClass'不能分配给'StatelessComponent'。
Type'ComponentClass'不提供签名'匹配'(props:any,context?:any):ReactElement |空”。
有谁看到我做错了什么?
答案 0 :(得分:0)
不确定这是否是您的问题,但是当我们制作无状态组件时,我们的签名看起来像React.SFC
而不是React.StatelessComponent
。