使用法
このパッケージは、インタラクティブブロックの view.js
ファイルに動的にインポートされることを意図しています。これは、初回ページロード時の JS バンドルサイズを削減するために行われます。
/* view.js */
import { store } from '@wordpress/interactivity';
// This is how you would typically use the navigate() action in your block.
store( 'my-namespace/myblock', {
actions: {
*goToPage( e ) {
e.preventDefault();
// We import the package dynamically to reduce the initial JS bundle size.
// Async actions are defined as generators so the import() must be called with `yield`.
const { actions } = yield import(
'@wordpress/interactivity-router'
);
yield actions.navigate( e.target.href );
},
},
} );
現在、ブロックの view.js
ファイル内で actions.navigate()
を呼び出して、別のページに移動したり、data-wp-on--click
属性に渡したりできます。
読み込まれると、このパッケージは core/router
ストアに 次の状態とアクション を追加します:
const { state, actions } = store( 'core/router', {
state: {
url: window.location.href,
navigation: {
hasStarted: false,
hasFinished: false,
texts: {
loading: '',
loaded: '',
},
message: '',
},
},
actions: {
*navigate(href, options) {...},
prefetch(url, options) {...},
}
})
コアの「クエリループ」ブロックは、地域ベースのナビゲーション を提供するために このパッケージを使用しています。
ディレクティブ
data-wp-router-region
ナビゲーション時に更新される領域を定義します。値として一意の ID が必要で、data-wp-interactive
を持つルートインタラクティブ要素内でのみ使用できます。つまり、data-wp-interactive
を持つ他の要素内にネストされていない要素です。
例:
<div data-wp-interactive="myblock" data-wp-router-region="main-list">
<ul>
<li><a href="/post-1">Post 1</a></li>
<li><a href="/post-2">Post 2</a></li>
<li><a href="/post-3">Post 3</a></li>
</ul>
<a data-wp-on--click="actions.navigate" href="/page/2">
</div>
アクション
ナビゲート
指定されたページに移動します。
この関数は、渡された href
を正規化し、必要に応じてページの HTML を取得し、新しいページで内容が変更されたインタラクティブ領域を更新します。また、ブラウザのセッション履歴に新しいエントリを作成します。
パラメータ
navigate( href: string, options: NavigateOptions = {} )
href
: ページhref
。options
: オプションオブジェクト。force
:true
の場合、URL の再取得を強制します。navigate()
は常にページをキャッシュするため、以前に移動したページがある場合はそれが使用されます。デフォルトはfalse
です。html
: 要求された URL を取得する代わりに使用される HTML 文字列。replace
:true
の場合、ブラウザのセッション履歴の現在のエントリを置き換えます。デフォルトはfalse
です。timeout
: ナビゲーションが中止されるまでの時間(ミリ秒)。デフォルトは10000
です。loadingAnimation
: ナビゲーション中にアニメーションを表示するかどうか。デフォルトはtrue
です。screenReaderAnnouncement
: ナビゲーション中にスクリーンリーダー用のメッセージを発表するかどうか。デフォルトはtrue
です。
プレフェッチ
渡された URL のページをプレフェッチします。ページはキャッシュされ、ナビゲーションに使用できます。
この関数は URL を正規化し、内部でフェッチの約束を保存して、進行中のリクエストに対して二重のフェッチをトリガーしないようにします。
パラメータ
prefetch( url: string, options: PrefetchOptions = {} )
url
: ページurl
。options
: オプションオブジェクト。
状態
state.url
は現在の URL と同期されたリアクティブプロパティです。
state.navigation
の下のプロパティは、ローディングバーアニメーション用です。
インストール
モジュールをインストールします:
npm install @wordpress/interactivity-router --save
このステップは、WordPress の外でインタラクティビティ API を使用する場合にのみ必要です。
WordPress 内では、このパッケージはすでにコアにバンドルされています。これがエンキューされることを確認するには、スクリプトモジュールの依存配列に @wordpress/interactivity-router
を追加します。このプロセスは、wp-scripts
のようなツールを使用して自動的に行われることがよくあります。
さらに、このパッケージは、あなたのコードが ES2015+ 環境で実行されることを前提としています。このような言語機能や API のサポートが限られているか、まったくない環境を使用している場合は、@wordpress/babel-preset-default
に含まれるポリフィルをコードに含める必要があります。
ライセンス
インタラクティビティ API の提案は、Gutenberg および WordPress プロジェクトの一部として、無料ソフトウェアであり、GNU 一般公衆ライセンスバージョン 2 または(あなたの選択により)それ以降のバージョンの条件の下でリリースされています。完全なライセンスについては、LICENSE.md を参照してください。