BaseControl 是 WordPress 组件库中的一个底层组件,用于为处理用户输入的组件生成标签和帮助文本。它通过 useBaseControlProps Hook 简化了可访问性关联,并包含 BaseControl.VisualLabel 子组件用于纯视觉标签。
import { BaseControl, useBaseControlProps } from '@wordpress/components';
// Render a `BaseControl` for a textarea input
const MyCustomTextareaControl = ({ children, ...baseProps }) => {
const { baseControlProps, controlProps } = useBaseControlProps( baseProps );
return (
<BaseControl { ...baseControlProps }>
<textarea { ...controlProps }>
{ children }
</textarea>
</BaseControl>
);
};See the WordPress Storybook for more detailed, interactive documentation.
BaseControl is a low-level component used to generate labels and help text for components handling user inputs.
import { BaseControl, useBaseControlProps } from '@wordpress/components';
// Render a `BaseControl` for a textarea input
const MyCustomTextareaControl = ({ children, ...baseProps }) => (
// `useBaseControlProps` is a convenience hook to get the props for the `BaseControl`
// and the inner control itself. Namely, it takes care of generating a unique `id`,
// properly associating it with the `label` and `help` elements.
const { baseControlProps, controlProps } = useBaseControlProps( baseProps );
return (
<BaseControl { ...baseControlProps }>
<textarea { ...controlProps }>
{ children }
</textarea>
</BaseControl>
);
);
as"symbol" | "object" | "label" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "big" | "blockquote" | "body" | "br" | "button" | ... 516 more ... | ("view" & FunctionComponent<...>)The HTML element or React component to render the component as.
classNamestringchildrenReactNodeThe content to be displayed within the BaseControl.
helpReactNodeAdditional description for the control.
Only use for meaningful description or instructions for the control. An element containing the description will be programmatically associated to the BaseControl by the means of an aria-describedby attribute.
hideLabelFromVisionbooleanfalseIf true, the label will only be visible to screen readers.
idstringThe HTML id of the control element (passed in as a child to BaseControl) to which labels and help text are being generated.
This is necessary to accessibly associate the label with that element.
The recommended way is to use the useBaseControlProps hook, which takes care of generating a unique id for you.
Otherwise, if you choose to pass an explicit id to this prop, you are responsible for ensuring the uniqueness of the id.
labelReactNodeIf this property is added, a label will be generated using label property as the content.
BaseControl.VisualLabel is used to render a purely visual label inside a BaseControl component.
It should only be used in cases where the children being rendered inside BaseControl are already accessibly labeled,
e.g., a button, but we want an additional visual label for that section equivalent to the labels BaseControl would
otherwise use if the label prop was passed.
import { BaseControl } from '@wordpress/components';
const MyBaseControl = () => (
<BaseControl help="This button is already accessibly labeled.">
<BaseControl.VisualLabel>Author</BaseControl.VisualLabel>
<Button>Select an author</Button>
</BaseControl>
);
as"symbol" | "object" | "label" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | ...The HTML element or React component to render the component as.
childrenReactNodeThe content to be displayed within the BaseControl.VisualLabel.