- インストール
- API
- compose
- createHigherOrderComponent
- debounce
- observableMap
- useCopyOnClick
- useCopyToClipboard
- useDebounce
- useDebouncedInput
- useDisabled
- useEvent
- useFocusableIframe
- useFocusOnMount
- useFocusReturn
- useInstanceId
- useIsomorphicLayoutEffect
- useObservableValue
- usePrevious
- useReducedMotion
- useRefEffect
- useResizeObserver
- useStateWithHistory
- useThrottle
- useViewportMatch
- useWarnOnChange
- withGlobalEvents
- withInstanceId
- withSafeTimeout
- withState
- このパッケージへの貢献
インストール
モジュールをインストールします
npm install @wordpress/compose --save
このパッケージは、あなたのコードがES2015+環境で実行されることを前提としています。そのような言語機能やAPIのサポートが限られているか、まったくない環境を使用している場合は、コードに@wordpress/babel-preset-default
で提供されるポリフィルを含めるべきです。
API
詳細については、各高階コンポーネントのREADMEファイルを参照できます。利用可能なコンポーネントはここにあります。
compose
複数の高階コンポーネントを単一の高階コンポーネントに構成します。右から左への関数合成を行い、各連続呼び出しには前の呼び出しの戻り値が供給されます。
これはlodash
のflowRight
関数に触発されています。
関連
createHigherOrderComponent
コンポーネントを強化されたコンポーネントと修飾子名にマッピングする関数を与えると、生成されたdisplayNameで強化されたコンポーネントを返します。
パラメータ
- mapComponent
( Inner: TInner ) => TOuter
: コンポーネントを強化されたコンポーネントにマッピングする関数。 - modifierName
string
: 生成された表示名の種名。
戻り値
debounce
lodashのdebounce
の簡略化された適切な型のバージョンで、常にタイマーを使用し、時々rAFを使用することはありません。
**注意:** `````leading`````および`````trailing`````オプションが`````true`````の場合、`````func`````は、デバウンス関数が`````wait`````タイムアウト中に1回以上呼び出された場合にのみ、タイムアウトの末尾で呼び出されます。
`````wait`````が`````0`````で、`````leading`````が`````false`````の場合、`````func`````呼び出しは次のティックまで遅延され、`````setTimeout`````のタイムアウトは`````0`````になります。
*パラメータ*
- func `````Function`````: デバウンスする関数。
- wait `````number`````: 遅延するミリ秒数。
- options `````Partial< DebounceOptions >`````: オプションオブジェクト。
- options.leading `````boolean`````: タイムアウトの先頭で呼び出すことを指定します。
- options.maxWait `````number`````: `````func`````が呼び出される前に遅延される最大時間。
- options.trailing `````boolean`````: タイムアウトの末尾で呼び出すことを指定します。
*戻り値*
- 新しいデバウンス関数を返します。
<a name="ifcondition"></a>
### ifCondition
与えられた条件が満たされる場合、または与えられたオプションのprop名でレンダリングする新しいコンポーネントを作成する高階コンポーネントクリエーター。
*使用法*
``````bash
type Props = { foo: string };
const Component = ( props: Props ) => <div>{ props.foo }</div>;
const ConditionalComponent = ifCondition( ( props: Props ) => props.foo.length !== 0 )( Component );
<ConditionalComponent foo="" />; // => null
<ConditionalComponent foo="bar" />; // => <div>bar</div>;
`
パラメータ
- predicate
( props: Props ) => boolean
: 条件をテストする関数。
戻り値
observableMap
*戻り値*
- `````ObservableMap< K, V >`````: `````ObservableMap`````型の新しいインスタンス。
<a name="pipe"></a>
### pipe
複数の高階コンポーネントを単一の高階コンポーネントに構成します。左から右への関数合成を行い、各連続呼び出しには前の呼び出しの戻り値が供給されます。
これは`````lodash`````の`````flow`````関数に触発されています。
*関連*
- [https://lodash.com/docs/4#flow](https://lodash.com/docs/4#flow)
<a name="pure"></a>
### pure
> **非推奨** `````memo`````または`````PureComponent`````を代わりに使用してください。
与えられたコンポーネントは、props/stateが変更されたときのみ再レンダリングされる強化されたコンポーネントを返します
<a name="throttle"></a>
### throttle
lodashの`````throttle`````の簡略化された適切な型のバージョンで、常にタイマーを使用し、時々rAFを使用することはありません。
`````func`````を最大`````wait`````ミリ秒ごとに1回だけ呼び出すスロットル関数を作成します。スロットル関数には、遅延された`````func`````呼び出しをキャンセルするための`````cancel`````メソッドと、それらを即座に呼び出すための`````flush`````メソッドが付属しています。`````options`````を提供して、`````func`````が`````wait`````タイムアウトの先頭および/または末尾で呼び出されるべきかどうかを示します。`````func`````は、スロットル関数に提供された最後の引数で呼び出されます。スロットル関数への後続の呼び出しは、最後の`````func`````呼び出しの結果を返します。
**注意:** `````leading`````および`````trailing`````オプションが`````true`````の場合、`````func`````は、スロットル関数が`````wait`````タイムアウト中に1回以上呼び出された場合にのみ、タイムアウトの末尾で呼び出されます。
`````wait`````が`````0`````で、`````leading`````が`````false`````の場合、`````func`````呼び出しは次のティックまで遅延され、`````setTimeout`````のタイムアウトは`````0`````になります。
*パラメータ*
- func `````Function`````: スロットルする関数。
- wait `````number`````: 呼び出しをスロットルするミリ秒数。
- options `````Partial< ThrottleOptions >`````: オプションオブジェクト。
- options.leading `````boolean`````: タイムアウトの先頭で呼び出すことを指定します。
- options.trailing `````boolean`````: タイムアウトの末尾で呼び出すことを指定します。
*戻り値*
- 新しいスロットル関数を返します。
<a name="useasynclist"></a>
### useAsyncList
Reactフックは、ソース配列から非同期にアイテムを追加する配列を返します。この動作は、パフォーマンス上の理由からアイテムのリストを非同期にレンダリングしたい場合に便利です。
*パラメータ*
- list `````T[]`````: ソース配列。
- config `````AsyncListConfig`````: 設定オブジェクト。
*戻り値*
- `````T[]`````: 非同期配列。
<a name="useconstrainedtabbing"></a>
### useConstrainedTabbing
ダイアログ/モーダルでは、タブ移動はラッパー要素のコンテンツに制約される必要があります。このフックは、返されたrefにその動作を追加します。
*使用法*
``````bash
import { useConstrainedTabbing } from '@wordpress/compose';
const ConstrainedTabbingExample = () => {
const constrainedTabbingRef = useConstrainedTabbing();
return (
<div ref={ constrainedTabbingRef }>
<Button />
<Button />
</div>
);
};
`
戻り値
useCopyOnClick
非推奨
要素がクリックされたときにテキストをクリップボードにコピーします。
パラメータ
- ref
import('react').RefObject<string | Element | NodeListOf<Element>>
: 要素への参照。 - text
string|Function
: コピーするテキスト。 - timeout
[number]
: 返された状態をリセットするためのオプションのタイムアウト。デフォルトで4秒。
戻り値
useCopyToClipboard
要素がクリックされたときに指定されたテキストをクリップボードにコピーします。
パラメータ
- text
string | (() => string)
: コピーするテキスト。利用可能でない場合や計算が高価な場合は関数を使用します。 - onSuccess
Function
: テキストがコピーされたときに呼び出されます。
戻り値
useDebounce
Lodashのdebounce
に似た関数をデバウンスします。新しいデバウンス関数が返され、引数のいずれかが変更された場合は、スケジュールされた呼び出しがキャンセルされます。デバウンスする関数を含め、レンダリング時に作成された関数をuseCallback
でラップしてください。
関連
パラメータ
- fn
TFunc
: デバウンスする関数。 - wait
[number]
: 遅延するミリ秒数。 - options
[import('../../utils/debounce').DebounceOptions]
: オプションオブジェクト。
戻り値
useDebouncedInput
値を使用する前にデバウンスする必要がある入力フィールド用のヘルパーフック。
パラメータ
- defaultValue 使用するデフォルト値。
戻り値
useDisabled
ブロックプレビューなどの特定の状況では、すべてのフォーカス可能なDOM要素(入力フィールド、リンク、ボタンなど)を無効にする必要があります。このフックは、返されたrefにネストされたDOM要素を無効にする動作を追加します。
可能であれば、inert HTML属性の使用を優先してください。
使用法
import { useDisabled } from '@wordpress/compose';
const DisabledExample = () => {
const disabledRef = useDisabled();
return (
<div ref={ disabledRef }>
<a href="#">This link will have tabindex set to -1</a>
<input
placeholder="This input will have the disabled attribute added to it."
type="text"
/>
</div>
);
};
パラメータ
- config
Object
: 設定オブジェクト。 - config.isDisabled
boolean=
: 要素を無効にするかどうか。
戻り値
useEvent
最新の状態にアクセスできる安定したコールバック関数を作成し、イベントハンドラーやエフェクトコールバック内で使用できます。レンダーフェーズで使用するとエラーが発生します。
使用法
function Component( props ) {
const onClick = useEvent( props.onClick );
useEffect( () => {
onClick();
// Won't trigger the effect again when props.onClick is updated.
}, [ onClick ] );
// Won't re-render Button when props.onClick is updated (if `Button` is
// wrapped in `React.memo`).
return <Button onClick={ onClick } />;
}
パラメータ
useFocusableIframe
iframeがフォーカスを受け取るときにバブリングフォーカスイベントを発生させます。通常通りonFocus
をiframeまたは親要素で使用します。
戻り値
useFocusOnMount
マウント時に最初のタブ可能な要素にフォーカスを当てるために使用されるフック。
使用法
import { useFocusOnMount } from '@wordpress/compose';
const WithFocusOnMount = () => {
const ref = useFocusOnMount();
return (
<div ref={ ref }>
<Button />
<Button />
</div>
);
};
パラメータ
- focusOnMount
boolean | 'firstElement'
: マウントモードでフォーカスを当てる。
戻り値
useFocusReturn
メニューやダイアログのような役割に期待されるように、以前にフォーカスを持っていた要素にフォーカスを戻すアンマウント動作を追加します。
使用法
import { useFocusReturn } from '@wordpress/compose';
const WithFocusReturn = () => {
const ref = useFocusReturn();
return (
<div ref={ ref }>
<Button />
<Button />
</div>
);
};
パラメータ
- onFocusReturn
[() => void]
: デフォルトの戻り動作をオーバーライドします。
戻り値
useInstanceId
ユニークなインスタンスIDを提供します。
パラメータ
- object
object
: IDを作成するためのオブジェクト参照。 - prefix
[string]
: ユニークIDのプレフィックス。 - preferredId
[string | number]
: 使用するデフォルトID。
戻り値
useIsomorphicLayoutEffect
<a name="usekeyboardshortcut"></a>
### useKeyboardShortcut
キーボードショートカットハンドラーを追加します。
*関連*
- [https://craig.is/killing/mice#api.bind](https://craig.is/killing/mice#api.bind)は、`````callback`````パラメータに関する情報です。
*パラメータ*
- shortcuts `````string[]|string`````: キーボードショートカット。
- callback `````(e: import('mousetrap').ExtendedKeyboardEvent, combo: string) => void`````: ショートカットコールバック。
- options `````WPKeyboardShortcutConfig`````: ショートカットオプション。
<a name="usemediaquery"></a>
### useMediaQuery
メディアクエリを実行し、変更時にその値を返します。
*パラメータ*
- query `````[string]`````: メディアクエリ。
*戻り値*
- `````boolean`````: メディアクエリの戻り値。
<a name="usemergerefs"></a>
### useMergeRefs
refsを1つのrefコールバックにマージします。
マージされたrefコールバックは、変更されたとき(`````useCallback`````依存関係の更新の結果)またはref値が変更されたときにのみ呼び出されることを保証します。
予想通り、毎回新しい関数を渡すと、refコールバックは毎回のレンダリング後に呼び出されます。
毎回のレンダリング後にrefコールバックが呼び出されないようにするには、`````useCallback( callback, dependencies )`````でラップします。依存関係が変更されると、古いrefコールバックは`````null`````で呼び出され、新しいrefコールバックは同じ値で呼び出されます。
refコールバックを使いやすくするために、`````useRefEffect`````の結果を渡すこともできます。これにより、`````null`````を処理する代わりにクリーンアップ関数を返すことができます。
ref(およびその動作)を*無効にする*ことも、単にrefを渡さないことで可能です。
``````bash
const ref = useRefEffect( ( node ) => {
node.addEventListener( ... );
return () => {
node.removeEventListener( ... );
};
}, [ ...dependencies ] );
const otherRef = useRef();
const mergedRefs useMergeRefs( [
enabled && ref,
otherRef,
] );
return <div ref={ mergedRefs } />;
`
パラメータ
- refs
Array<TRef>
: マージするrefs。
戻り値
useObservableValue
Reactフックは、ObservableMap
のエントリを観察できます。このフックは、キーに対応する現在の値を返します。値が保存されていない場合はundefined
を返します。また、値の変更を観察し、値が変更された場合に呼び出しコンポーネントの更新をトリガーします。
パラメータ
- map
ObservableMap< K, V >
: 観察するObservableMap
。 - name
K
: 観察するマップキー。
戻り値
usePrevious
前のレンダリングからの値を使用します。https://usehooks.com/usePrevious/に基づいています。
パラメータ
- value
T
: トラッキングする値。
戻り値
useReducedMotion
ユーザーが動きの軽減を好むかどうかを返すフック。
戻り値
useRefEffect
エフェクトのようなrefコールバック。useEffect
と同様に、refが変更された場合や依存関係の1つが変更された場合に実行されるクリーンアップ関数を返すことができます。refはコールバック関数の引数として提供されます。このuseEffect
との主な違いは、useEffect
コールバックがrefが変更されたときに呼び出されないことですが、これは呼び出されます。返されたrefコールバックをコンポーネントのrefとして渡し、useMergeRefs
で複数のrefsをマージします。
依存関係の配列が空の場合、例えばイベントハンドラーをクリーンアップする必要は厳密にはありません。ノードが削除されるためです。依存関係を追加すると、同じノードに対してrefコールバックが複数回呼び出されるため、クリーンアップが必要です。
パラメータ
- callback
( node: TElement ) => ( () => void ) | void
: 引数としてrefを持つコールバック。 - dependencies
DependencyList
: コールバックの依存関係。
戻り値
useResizeObserver
HTMLまたはSVG要素のためのResizeObserver
を設定します。
返されたセッターを観察したいReact要素にコールバックrefとして渡すか、高度な使用ケースのためにレイアウトエフェクトで使用します。
使用法
const setElement = useResizeObserver(
( resizeObserverEntries ) => console.log( resizeObserverEntries ),
{ box: 'border-box' }
);
<div ref={ setElement } />;
// The setter can be used in other ways, for example:
useLayoutEffect( () => {
setElement( document.querySelector( `data-element-id="${ elementId }"` ) );
}, [ elementId ] );
パラメータ
- callback
ResizeObserverCallback
:ResizeObserver
コールバック – MDNドキュメント。 - options
ResizeObserverOptions
: 呼び出し時にResizeObserver.observe
に渡されるオプション – MDNドキュメント。 変更は無視されます。
useStateWithHistory
undo/redo履歴を持つuseState。
パラメータ
- initialValue
T
: 初期値。
戻り値
useThrottle
Lodashのthrottle
に似た関数をスロットルします。新しいスロットル関数が返され、引数のいずれかが変更された場合は、スケジュールされた呼び出しがキャンセルされます。スロットルする関数を含め、レンダリング時に作成された関数をuseCallback
でラップしてください。
関連
パラメータ
- fn
TFunc
: スロットルする関数。 - wait
[number]
: 呼び出しをスロットルするミリ秒数。 - options
[import('../../utils/throttle').ThrottleOptions]
: オプションオブジェクト。詳細についてはリンクされたドキュメントを参照してください。
戻り値
useViewportMatch
ビューポートが指定されたクエリに一致する場合はtrueを返し、そうでない場合はfalseを返します。
使用法
useViewportMatch( 'huge', '<' );
useViewportMatch( 'medium' );
パラメータ
- breakpoint
WPBreakpoint
: ブレークポイントサイズ名。 - operator
[WPViewportOperator]
: ビューポートオペレーター。
戻り値
useWarnOnChange
オブジェクトのプレビュー値と新しい値の間で浅い比較を行うフック。違いがある場合、それをコンソールに印刷します。これは、コンポーネントが再レンダリングされる理由を確認するために、パフォーマンス関連の作業で便利です。
使用法
function MyComponent( props ) {
useWarnOnChange( props );
return 'Something';
}
パラメータ
withGlobalEvents
非推奨
DOMイベントタイプとコンポーネントのコールバック関数名に対応する値のオブジェクトを与えると、イベントが発生したときにコールバックを呼び出すウィンドウイベントハンドラーを作成または更新する高階コンポーネントクリエーター。消費者開発者に代わって、高階コンポーネントは、コンポーネントがアンマウントされるときにアンバインドを管理し、アプリケーション全体で最大1つのイベントハンドラーをバインドします。
パラメータ
- eventTypesToHandlers
Record<keyof GlobalEventHandlersEventMap, string>
: DOMイベントタイプのキーを持つオブジェクトで、値はイベントを処理する元のコンポーネントのインスタンス上の関数の名前です。
戻り値
withInstanceId
コンポーネントごとにユニークなインスタンスIDを提供するために使用される高階コンポーネント。
withSafeTimeout
コンポーネントのライフサイクルにバインドされるべき遅延関数呼び出しを提供および管理するために使用される高階コンポーネント。
withState
非推奨
useState
を代わりに使用してください。
内部コンポーネント状態をpropsを介して提供および管理するために使用される高階コンポーネント。
パラメータ
- initialState
any
: コンポーネントのオプションの初期状態。
戻り値
このパッケージへの貢献
これはGutenbergプロジェクトの一部である個別のパッケージです。このプロジェクトはモノレポとして整理されています。特定の目的を持つ複数の自己完結型ソフトウェアパッケージで構成されています。このモノレポ内のパッケージはnpmに公開され、WordPressや他のソフトウェアプロジェクトで使用されています。
このパッケージやGutenberg全体への貢献について詳しく知りたい場合は、プロジェクトの主要な貢献者ガイドをお読みください。