Redux-Form v7字段组件打字稿错误

时间:2017-12-08 17:35:03

标签: reactjs typescript redux redux-form

这是我使用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 |空”。

有谁看到我做错了什么?

1 个答案:

答案 0 :(得分:0)

不确定这是否是您的问题,但是当我们制作无状态组件时,我们的签名看起来像React.SFC而不是React.StatelessComponent