我从rc-field-from
包为Field
做了如下 Package :
import * as React from "react";
import Form from "rc-field-form";
import type { FieldProps } from "rc-field-form/lib/Field";
const { Field } = Form;
interface LabelFieldProps extends FieldProps {
label?: React.ReactNode;
onClick?: (event?: React.MouseEvent<HTMLElement>) => void;
onChange?: (event?: React.ChangeEvent<HTMLElement>) => void;
}
export const FormField: React.FunctionComponent<LabelFieldProps> = ({
name,
label,
children,
...restProps
}) => (
<Field name={name} {...restProps}>
{(control, meta, form) => {
const childNode =
typeof children === "function"
? children(control, meta, form)
: React.cloneElement(children as React.ReactElement, {
...control
});
return (
<div className="flex flex-col mb-5">
<div className="flex flex-col">
{label && <span className="text-md font-semibold mb-2">{label}</span>}
{childNode}
</div>
</div>
);
}}
</Field>
);
但是当我想在FormField
组件的子组件中使用onClick时,如下所示:
<FormField name="test" label="Some Test">
<Input onChange={(e) => console.log(e.target.value)} /> //nothing print here
</FormField>
然后我的onChange或onCLick(nothing)被触发。有人能告诉我我的字段 Package 器出了什么问题,以及如何修复它以便在我的childs上使用onChange吗?
谢谢你的帮助!
1条答案
按热度按时间xtupzzrd1#
您应该将
onClick
和onChange
传递给以下孩子在你将它们从 prop 中分解出来之后