ユーティリティ / getTextareaProps

getTextareaProps

テキストエリア要素をアクセシブルにするために必要なすべてのプロパティを返すヘルパーです。

1const props = getTextareaProps(meta, options);

#

1import { useForm, getTextareaProps } from '@conform-to/react';
2
3function Example() {
4  const [form, fields] = useForm();
5
6  return <textarea {...getTextareaProps(fields.content)} />;
7}

#オプション

value

このヘルパーは、例えばコントロールされた入力など、これが false に設定されていない限り、 defaultValue を返します。

ariaAttributes

結果のプロパティに aria-invalidaria-describedby を含めるかどうかを決定します。デフォルトは true です。

ariaInvalid

ARIA 属性を meta.errors または meta.allErrors に基づいて設定するかどうかを決定します。デフォルトは errors です。

ariaDescribedBy

aria-describedby 属性に追加の id を付加します。フィールドメタデータから meta.descriptionId を渡すことができます。

#Tips

ヘルパーは任意です。

このヘルパーは、定型文を減らし、読みやすくするための便利な機能です。テキストエリア要素のプロパティを設定するために、いつでもフィールドメタデータを直接使用することができます。

1// Before
2function Example() {
3  return (
4    <form>
5      <textarea
6        key={fields.content.key}
7        id={fields.content.id}
8        name={fields.content.name}
9        form={fields.content.formId}
10        defaultValue={fields.content.initialValue}
11        aria-invalid={!fields.content.valid || undefined}
12        aria-describedby={
13          !fields.content.valid ? fields.content.errorId : undefined
14        }
15        required={fields.content.required}
16        minLength={fields.content.minLength}
17        maxLength={fields.content.maxLength}
18      />
19    </form>
20  );
21}
22
23// After
24function Example() {
25  return (
26    <form>
27      <textarea {...getTextareaProps(fields.content)} />
28    </form>
29  );
30}

自分のヘルパーを作る

ヘルパーはネイティブのフォーム要素のために設計されています。カスタムコンポーネントを使う必要がある場合、いつでも独自のヘルパーを作ることができます。