【发布时间】:2021-09-06 19:14:56
【问题描述】:
我正在尝试在我的子组件中使用register() 方法。但我收到一个打字稿错误说:Expected 1-2 arguments, but got 0.
我假设我错误地传递了 register 方法?
父组件
type FormValues = {
projectType: string;
};
const Parent = () => {
const {
register,
} = useForm<FormValues>({ mode: 'all' });
return (
<Container>
<FormBlock id="form">
<fieldset>
<ChildComponent props={register()}/>
</fieldset>
</FormBlock>
</Container>
);
};
子组件
const ChildComponent = ({ props }) => {
return (
<InputField {...props.register('projectType')}></InputField
);
};
【问题讨论】:
-
在父组件中,您的代码试图调用注册函数并将返回值作为道具传递,而不是将函数本身作为道具传递。
-
正确传递它的最佳方法是什么?使用
this.register? -
通过调用
register,您不是将函数传递给ChildComponent,而是返回值。此外,您不会将道具props传递给组件。提供给ChildComponent的参数已经是道具并被包装到一个对象中。只要通过register={register}。
标签: reactjs typescript react-functional-component react-hook-form