Vue 3 構成 API の定型コードの削減: ルーターとストレージの実装の簡素化
P粉281089485
2023-08-29 18:19:32
<p>Vue 3 の Comboposition API を使用するには、各ビューに次のコードが必要です。</p>
<pre class="brush:js;toolbar:false;">import { useRouter, useRoute } from 'vue-router'
「vuex」からインポート { useStore }
デフォルトのエクスポート {
設定() {
const ルーター = useRouter()
const ストア = useStore()
// ...
}
}
</pre>
<p>アプリケーションの作成時にそれらを一度宣言し、作成したアプリケーションに渡して、これらの宣言を必要とせずにアプリケーションビューで単に使用する方法はありますか? vue2 では、これらはアプリケーションの初期化時に渡されるため、<code>this.$store</code> / <code>this.$router</code> は正常に動作します。 </p>
<p>問題を引き起こしやすいグローバル変数を使用するアイデア: <code>app.vue</code> では、次のように変数を 1 回宣言できます: </p>
<pre class="brush:js;toolbar:false;">「vuex」から { useStore } をインポートします
デフォルトのエクスポート {
設定() {
globalthis.store = useStore()
</pre>
<p>これにより、<code>store</code> がどこでも利用できるようになります。 </p>
setup()
では、コンポーネントがまだ作成されていないため、コンポーネント インスタンスは使用できません。そのため、Composition API にはを使用するための
thisコンテキストがありません。 this.$store
。追加のインポートを必要とせずに
$storesetup()
でストア/ルーター変数を使用できるようにする唯一の方法 は、それらをグローバル変数として window## にアタッチすることだと思います #/globalThis
(グローバル変数の制限を無視):リーリー
オプション API とテンプレートでは、引き続きと
$router
を使用してストアとルーターにアクセスできることに注意してください。具体的な例については、## を参照してください。 #Options API## テンプレート
の例 (Vuex 4 および Vue Router 4 の場合): リーリー