TextareaControl 是 WordPress 组件库中的一个多行文本输入控件,适用于需要用户输入较长文本的场景。它提供固定高度和垂直滚动功能,并遵循设计指南以确保良好的用户体验。
import { useState } from 'react';
import { TextareaControl } from '@wordpress/components';
const MyTextareaControl = () => {
const [ text, setText ] = useState( '' );
return (
<TextareaControl
label="Text"
help="Enter some text"
value={ text }
onChange={ ( value ) => setText( value ) }
/>
);
};TextareaControls are TextControls that allow for multiple lines of text, and wrap overflow text onto a new line. They are a fixed height and scroll vertically when the cursor reaches the bottom of the field.

Use TextareaControl when you need to encourage users enter an amount of text that’s longer than a single line. (A bigger box can encourage people to be more verbose, where a smaller one encourages them to be succinct.)
TextareaControl should:
Do not use TextareaControl if you need to let users enter shorter answers (no longer than a single line), such as a phone number or name. In this case, you should use Text Control.

Do
Use TextareaControl to let users to enter text longer than a single line.

Don’t
Use TextareaControl for shorter answers.

Containers improve the discoverability of text fields by creating contrast between the text field and surrounding content.

Do
Use a stroke around the container, which clearly indicates that users can input information.

Don’t
Use unclear visual markers to indicate a text field.
Label text is used to inform users as to what information is requested for a text field. Every text field should have a label. Label text should be above the input field, and always visible. Write labels in sentence capitalization.
When text input isn’t accepted, an error message can display instructions on how to fix it. Error messages are displayed below the input line, replacing helper text until fixed.

import { useState } from 'react';
import { TextareaControl } from '@wordpress/components';
const MyTextareaControl = () => {
const [ text, setText ] = useState( '' );
return (
<TextareaControl
label="Text"
help="Enter some text"
value={ text }
onChange={ ( value ) => setText( value ) }
/>
);
};
The set of props accepted by the component will be specified below.
Props not included in this set will be applied to the textarea element.
help: string | ElementIf this property is added, a help text will be generated using help property as the content.
hideLabelFromVision: booleanIf true, the label will only be visible to screen readers.
label: stringIf this property is added, a label will be generated using label property as the content.
onChange: ( value: string ) => voidA function that receives the new value of the textarea each time it changes.
rows: numberThe number of rows the textarea should contain.
value: stringThe current value of the textarea.
TextControl component.