目前,我已经创建了一些不同的表单元素。我正在尝试以不同的方式创建它们,以便我可以将它们拼凑在一起为表单创建不同的格式。
以下是我的一些表单元素:
// Field Component
interface IField extends ILabel {}
export const Field: React.FunctionComponent<IField> = props => {
return (
<div>
<Label {...props} />
{props.children}
</div>
);
};
// Label Component
interface ILabel {
htmlFor: string;
label: string;
required?: boolean;
}
export const Label: React.FunctionComponent<ILabel> = props => {
return (
<label htmlFor={props.htmlFor}>
{props.label}
// Some required icon would go where I've added the <span />.
{props.required && <span />}
</label>
);
};
// Input Wrapper Component
export const InputWrapper: React.FunctionComponent = props => {
return <div>{props.children}</div>;
};
// Input Component
interface IInput {
type: string;
id: string;
name: string;
value?: string;
placeholder?: string;
required?: boolean;
}
export const Input: React.FunctionComponent<IInput> = props => {
return (
<input
type={props.type}
id={props.id}
name={props.name}
value={props.value}
placeholder={props.placeholder}
required={props.required}
/>
);
};
这是我实现组件的方式:
<Field htmlFor="name" label="Name:" required>
<InputWrapper>
<Input
id="name"
type="text"
name="name"
placeholder="Enter your name..."
/>
</InputWrapper>
</Field>
我希望能够required
在Field
组件上设置prop并且它也会传递给我的Input
组件,无论它嵌套多深。这怎么可能?
我还提供了一个CodeSandBox演示。
提前感谢您的任何帮助!