Reduzierung des Boilerplate-Codes in der Vue 3 Composition API: Vereinfachung der Router- und Speicherimplementierung
P粉281089485
2023-08-29 18:19:32
<p>Bei Verwendung der Composition API von Vue 3 benötigt jede Ansicht den folgenden Code: </p>
<pre class="brush:js;toolbar:false;">import { useRouter, useRoute } from 'vue-router'
importiere { useStore } aus 'vuex'
Standard exportieren {
aufstellen() {
const router = useRouter()
const store = useStore()
// ...
}
}
</pre>
<p>Gibt es eine Möglichkeit, sie beim Erstellen der Anwendung einmal zu deklarieren und sie dann an die erstellte Anwendung zu übergeben und sie einfach in der Anwendungsansicht zu verwenden, ohne dass diese Deklarationen erforderlich sind? In vue2 werden diese übergeben, wenn die Anwendung initialisiert wird, und dann funktioniert <code>this.$store</code> / <code>this.$router</code> </p>
<p>Eine Idee, globale Variablen zu verwenden, die leicht zu Problemen führen können: In <code>app.vue</code> können Sie sie einmal so deklarieren: </p>
<pre class="brush:js;toolbar:false;">import { useStore } from 'vuex'
Standard exportieren {
aufstellen() {
globalthis.store = useStore()
</pre>
<p>Dann ist <code>store</code> überall verfügbar. </p>
在
setup()
中,组件实例不可用,因为组件尚未创建,所以在Composition API中没有this
上下文可用于使用this.$store
。我认为在
setup()
中使store/router变量可用的唯一方法而不需要其他导入是将它们作为全局变量附加到window
/globalThis
上(忽略全局变量的限制):请注意,在Options API中和模板中,仍然可以使用
$store
和$router
访问store和router,具体示例可参考Options API和模板中的示例,对于Vuex 4和Vue Router 4: