export const HOC = (WrappedComponent) => {
const { register, control, handleSubmit, reset, watch } = useForm({
defaultValues: {
test: [{ firstName: "Bill", lastName: "Luo" }]
}
});
const { fields, append, prepend, remove } = useFieldArray({
control,
name: "test"
});
return (
<form>
<ul>
{fields.map((item, index) => {
return (
<WrappedComponent
item={item}
removeindex={remove}
index={index}
{...register(`test.${index}.firstName`)}
/>
);
})}
</ul>
<section>
<button
type="button"
onClick={() => {
append({ firstName: "appendBill" });
}}
>
Append
</button>
</section>
</form>
);
};
export default HOC
const InputList = props => {
return (
<li key={props.item.id}>
<input {...props} ></input>
<button onClick={() => props.removeindex(props.index)} type="button" >Delete</button>
</li>
);
};
export default HOC(InputList)
上面我创建了带有 React 钩子和 React FORM 钩子的高阶组件,以呈现输入列表组件。但我收到以下错误
无效的钩子调用。钩子只能在函数组件的主体内部调用。