Rumah  >  Soal Jawab  >  teks badan

Kembalikan komponen sebelumMasukkan dalam penghala vue

Saya mempunyai laluan berikut dalam penghala saya

{
                path: '/Page',
                component: async () => {
                    const isUserLogged = await getUser()
                    const store = useStore()
                    if (userLogged && store.value1) {
                        return import('./pages/PublicPage/PublicPage.vue')
                    } else {
                        return import('./pages/NonPublicPage/NonPublicPage.vue')
                    }
                },
            },
}

Setiap kali saya memasuki laluan ini, saya perlu mengembalikan komponen yang berbeza berdasarkan nilai dalam storan, tetapi komponen tersebut hanya dimuatkan sekali. Saya cuba menulis semula struktur supaya ia menggunakan beforeEnter seperti ini:

{
path: '/Page',
beforeEnter: async (to, from, next) => {
                    const isUserLogged = await getUser()
                    const store = useStore()
                    if (userLogged && store.value1) {
                            next({
                                component: () => import('./pages/PublicPage/PublicPage.vue'),
                            })
                    } else {
                        next({
                            component: () => import('./pages/NonPublicPage/NonPublicPage.vue'),
                        })
                    }
                },
}

Tetapi penyelesaian ini tidak berkesan. Saya perlu mengembalikan komponen yang berbeza berdasarkan syarat tanpa menggunakan laluan yang berbeza. Adakah mungkin untuk mengembalikan komponen dalam next() dalam beforeEnter atau adakah terdapat penyelesaian lain untuk menyelesaikan masalah ini?

P粉787806024P粉787806024282 hari yang lalu344

membalas semua(1)saya akan balas

  • P粉404539732

    P粉4045397322024-01-11 16:41:54

    Saya mengesyorkan menggunakan Komponen Dinamik.

    Penyelesaian mudah ditunjukkan di bawah.

    Penghala anda

    {
      path: '/Page',
      component: ConditionalPage
    }

    ConditionalPage.vue

    <script setup lang="ts">
    import { computed } from "vue"  
    import PublicPage from "./PublicPage.vue"  
    import NonPublicPage from "./NonPublicPage.vue"  
    
    const isUserLogged = await getUser()  
    const store = useStore()
    
    const component = computed(() => {
      if (userLogged && store.value1) return PublicPage
      return NonPublicPage
    })
    </script>
     
    <template>
      <component :is="component" />
    </template>

    Berikut ialah contoh yang lebih terperinci berdasarkan kod anda.

    Taman Permainan Vue SFC

    balas
    0
  • Batalbalas