Mengurangkan kod boilerplate dalam API Komposisi Vue 3: memudahkan pelaksanaan penghala dan storan
P粉281089485
2023-08-29 18:19:32
<p>Menggunakan API Komposisi Vue 3, setiap paparan memerlukan kod berikut: </p>
<pre class="brush:js;toolbar:false;">import { useRouter, useRoute } daripada 'vue-router'
import { useStore } daripada 'vuex'
eksport lalai {
persediaan() {
penghala const = useRouter()
kedai const = useStore()
// ...
}
}
</pra>
<p>Adakah terdapat cara untuk mengisytiharkannya sekali semasa membuat aplikasi dan kemudian menyerahkannya kepada aplikasi yang dibuat dan hanya menggunakannya dalam paparan aplikasi tanpa memerlukan pengisytiharan ini? Dalam vue2, ini diluluskan apabila aplikasi dimulakan, dan kemudian <code>this.$store</code> </p>
<p>Idea untuk menggunakan pembolehubah global, yang boleh menyebabkan masalah dengan mudah: dalam <code>app.vue</code>
<pre class="brush:js;toolbar:false;">import { useStore } daripada 'vuex'
eksport lalai {
persediaan() {
globalthis.store = useStore()
</pra>
<p>Kemudian <code>store</code> akan tersedia di mana-mana sahaja. </p>
dalam
setup()
中,组件实例不可用,因为组件尚未创建,所以在Composition API中没有this
上下文可用于使用this.$store
.Saya memikirkan
setup()
中使store/router变量可用的唯一方法而不需要其他导入是将它们作为全局变量附加到window
/globalThis
(mengabaikan sekatan pembolehubah global):Sila ambil perhatian bahawa dalam API Pilihan dan templat, anda masih boleh menggunakan
$store
和$router
untuk mengakses kedai dan penghala Untuk contoh khusus, sila rujuk contoh dalam API Pilihan dan Templat Vuex 4 dan Vue 4: