使用法

フォームコンポーネントがあると仮定すると、<Disabled> でフォームをラップすることで、すべてのフォーム入力を無効にできます。

  1. import { useState } from 'react';
  2. import { Button, Disabled, TextControl } from '@wordpress/components';
  3. const MyDisabled = () => {
  4. const [ isDisabled, setIsDisabled ] = useState( true );
  5. let input = <TextControl label="Input" onChange={ () => {} } />;
  6. if ( isDisabled ) {
  7. input = <Disabled>{ input }</Disabled>;
  8. }
  9. const toggleDisabled = () => {
  10. setIsDisabled( ( state ) => ! state );
  11. };
  12. return (
  13. <div>
  14. { input }
  15. <Button variant="primary" onClick={ toggleDisabled }>
  16. Toggle Disabled
  17. </Button>
  18. </div>
  19. );
  20. };

コンポーネントは、<Disabled /> にラップされているかどうかを、Disabled.Context を使用して context にアクセスすることで検出できます。

  1. function CustomButton( props ) {
  2. const isDisabled = useContext( Disabled.Context );
  3. return (
  4. <button
  5. { ...props }
  6. style={ { opacity: isDisabled ? 0.5 : 1 } }
  7. />
  8. );
  9. }

注: このコンポーネントは、inert HTML 属性 をサポートしていないブラウザでは期待通りに動作しない場合があります。このコンポーネントをプロジェクトで使用する際は、公式の WICG ポリフィル を追加することをお勧めします。

プロパティ

コンポーネントは以下のプロパティを受け入れます:

isDisabled

すべての子孫フィールドを無効にするかどうか。デフォルトは true です。

  • タイプ: Boolean
  • 必須: いいえ
  • デフォルト: true