私は Angular から Vue.js に切り替えて、そのアーキテクチャを理解しようとしています。現在、基本的な問題に直面しており、多くの回避策を使用していますが、実際には一時的な解決策しか考えていません。
ここでの主な問題は、Vue.js 3 と Pinia のコラボレーションです。 Pinia は Store、Getter、Action で構成されます。場合によっては、ストア内に非常にネストされたオブジェクトがあり、そのオブジェクトの特定の部分だけが必要になることがあります。たとえば、オブジェクトの必要な部分だけを出力するために、このためのゲッターを作成すると完璧です。
しかし、オブジェクトのこれらの部分をテンプレートから正確に変更したい場合はどうすればよいでしょうか?私の願いは、ストア内のデータも変更されることです。ただし、ゲッターは読み取り専用であるため、これは不可能です。
ここからどうやって進めばいいですか?
もちろん、私の説明を強調するために、いくつかの練習を伴う例を示したいと思います。
リーリーここでは非常にネストされたオブジェクト roles を使用してストアを作成しています。 v-for テンプレートで使用しているゲッター getElementsForCurrentRole では、特定の要素のみが必要です。
誰もが理解しやすいように、テンプレート コードもここに投稿します:
リーリードキュメントで説明されている storeToRefs 関数を使用した後、getElementsForCurrentRole ゲッターをループしてデータをリアクティブにしました。私の問題は、データが部分的にしか反応しない可能性があることです。たとえば、Switch 要素の値を変更すると、ストアは正常に更新されます。これは機能します。ただし、ループしている配列の順序にアクセスできないようです。ドラッグ アンド ドロップで順序を変更するとすぐに、次のメッセージが表示されます: 書き込み操作に失敗しました: 計算された値は読み取り専用です。
これは理解できません、理解できません。
回避策として、現在、イベントに基づいてドラッグ後の配列内のレコードの新旧のインデックスを計算し、ストレージを手動で更新しています。しかし、それがその背後にある目的ではありません。私はアーキテクチャに関して根本的に何かを誤解しているのでしょうか?このような状況にどう対処すればよいでしょうか?
1 件の回答
ゲッターを使用しています。 Getter は読み取り専用のプロパティです。 pinia ストアの値を更新するには、アクションを作成する必要があります。 そして、値が変更されたときにバインドして書き込む v-model を使用しています。したがって、ゲッターを使用して読み取ることはできますが、書き込むことはできません。あなたの状況にはいくつかの可能性が考えられます。その 1 つは、計算されたプロパティと演算の作成です。このような### リーリー
およびコンポーネント内の計算されたプロパティ:リーリー
Hot Questions
Hot Tools
vc9-vc14 (32+64 ビット) ランタイム ライブラリ コレクション (以下のリンク)
phpStudy のインストールに必要なランタイム ライブラリのコレクションをダウンロードします。
VC9 32ビット
VC9 32 ビット phpstudy 統合インストール環境ランタイム ライブラリ
PHP プログラマー ツールボックスのフルバージョン
プログラマ ツールボックス v1.0 PHP 統合環境
VC11 32ビット
VC11 32ビットphpstudy統合インストール環境ランタイムライブラリ
SublimeText3 中国語版
中国語版、とても使いやすい
ホットトピック
20335
7
13530
4
11850
4
8835
17
8420
7





