使用法

  1. import { withFilters } from '@wordpress/components';
  2. import { addFilter } from '@wordpress/hooks';
  3. const MyComponent = ( { title } ) => <h1>{ title }</h1>;
  4. const ComponentToAppend = () => <div>Appended component</div>;
  5. function withComponentAppended( FilteredComponent ) {
  6. return ( props ) => (
  7. <>
  8. <FilteredComponent { ...props } />
  9. <ComponentToAppend />
  10. </>
  11. );
  12. }
  13. addFilter(
  14. 'MyHookName',
  15. 'my-plugin/with-component-appended',
  16. withComponentAppended
  17. );
  18. const MyComponentWithFilters = withFilters( 'MyHookName' )( MyComponent );

withFilters は、フック名を提供する文字列引数を期待します。それは、コンポーネントを構成するために使用できる関数を返します。フック名は、プラグイン開発者が wp.hooks.addFilter メソッドを使用して、この高階コンポーネントに渡されるコンポーネントをカスタマイズまたは完全にオーバーライドすることを可能にします。

プロパティをオーバーライドすることも可能であり、そのためには次のように機能する高階コンポーネントを実装します:

  1. import { withFilters } from '@wordpress/components';
  2. import { addFilter } from '@wordpress/hooks';
  3. const MyComponent = ( { hint, title } ) => (
  4. <>
  5. <h1>{ title }</h1>
  6. <p>{ hint }</p>
  7. </>
  8. );
  9. function withHintOverridden( FilteredComponent ) {
  10. return ( props ) => (
  11. <FilteredComponent { ...props } hint="Overridden hint" />
  12. );
  13. }
  14. addFilter( 'MyHookName', 'my-plugin/with-hint-overridden', withHintOverridden );
  15. const MyComponentWithFilters = withFilters( 'MyHookName' )( MyComponent );