Pinia の継承/共有操作とゲッター
P粉662614213
P粉662614213 2023-12-22 13:50:12
0
2
470

アクションとゲッターのセットを共有することになっているいくつかの Pinia ストアがありますが、これを効率的に実装する方法がよくわかりません。

私は、ユーザーがさまざまなメディア (書籍、映画、テレビ番組など) を管理できるアプリケーションを構築しています。今考えているのは、BookStore、MovieStoreなどのメディアタイプごとにストアを作ることです。多くのゲッターと操作 (countdeleteOne など) は、これらの異なるストア間で同一です。

ここで DRY を実装するにはどうすればよいですか? Pinia ドキュメントの例は、他のストア内でのアクションとゲッターの再利用に焦点を当てていますが、これはゲッターとセッターのセットを直接継承する私のユースケースに完全に対応しているとは思えません。

ここで試している継承アプローチはアンチパターンですか?

P粉662614213
P粉662614213

全員に返信(2)
P粉420958692

一部の機能をすべてのストアではなく共有したい場合は、コンポーザブルを使用できます。

別のコンポーズ可能な関数を作成し、ストア インスタンスの一部をその関数に渡すことができます。

codesandbox でサンプルを作成しました。

コードサンドボックスの短い例を次に示します:

common.ts

リーリー

その後、どのストアでも次のように使用できます:

fooStore.ts

リーリー

この方法で、任意のストレージまたはコンポーネントで任意の関数、オブジェクトなどを作成できます。

いいねを押す +0
P粉449281068

これはプラグインを使用して実現できます docs

サンプルムービー:

複数の店舗があり、各州で共有の命名スキームが使用されています:

  • プロジェクト: 単一エンティティ プロジェクト (単一ムービーの詳細)
  • コレクション: アイテムコレクション (すべてのムービーのコレクション)

各ストアは同じ CRUD 操作を行いますが、URL が変更されるだけです

  • getCollection: API からアイテムのリストを取得し、コレクションへの応答を設定します (https://url.com/movies a>)
  • getItem: API から 1 つのアイテムを取得し、そのアイテムへの応答を設定します (https://url.com/movies/id)
  • handleError: エラー メッセージを含むアラートをユーザーに表示します

プラグインの作成:

リーリー

Ponia 用のプラグインを提供します:

リーリー

movieStore.js の例 (共有アクションと状態を使用)

リーリー

コンポーネントでの使用例

リーリー

編集者: 1

コンテキストをプラグインに渡すと、ストアとそれに渡されたオプションにアクセスでき、そこからストア ID を確認して、以下に示すように特定のストアのみを返すことができます

リーリー

私は 3 つのストアを使用して非常に基本的な例を作成しました。上記のチェックは codesandbox で利用できます ここ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!