Saya menemukan cara Silently update url
, tetapi rute tetap terpicu (tapi ini mungkin bukan masalah - tergantung situasi).
Dalam kasus saya, pengguna dapat membuat profil, misalnya melalui URL http://localhost:8080/#/user/create/
, memberikan beberapa info profil dan setelah "Simpan" diklik, pengguna diarahkan ke profil yang dibuatnya dengan URL misalnya http://localhost:8080/#/FaFYhTW9gShk/
, di mana pengguna dapat terus mengedit formulir profil .
Bagaimana aku melakukan itu?
- Halaman
user/create/
(ProfileCreate) dan halaman FaFYhTW9gShk/
(ProfileDetails) menggunakan komponen ProfileUser
yang sama.
// router.js
const routes = [
{
path: '/user/create',
component: Profile,
children: [
{
path: '',
name: 'ProfileCreate',
component: ProfileUser
}
]
}
{ path: '/:profileUrl',
component: Profile,
children: [
{
path: '',
name: 'ProfileDetails',
component: ProfileUser
}
]
}
]
- Di
router.beforeEach
saya memeriksa apakah saya perlu memuat data dari bagian belakang, atau saya hanya perlu mengubah URL?
// router.js
router.beforeEach((to, from, next) => {
if (!('isProfileLoaded' in to.params)) {
// load profile from backend and update Vuex
}
next()
})
- Ketika tombol "Simpan" diklik, di
action
saya mengirim data ke backend + menelepon router.push
// action.js
import router from '@/router'
// Here I send data to backend
// Some code
// Update-URL-Trick
router.push({
name: 'ProfileDetails',
params: { profileUrl: profileUrl isProfileLoaded: true }
})
Sejauh isProfileLoaded
disediakan, Vue menggunakan kembali data profil dari Vuex + router silently
memperbarui URL menggunakan kembali komponen ProfileUser
yang sama.
person
TitanFighter
schedule
09.12.2019
onComplete
. - person Rinux   schedule 14.07.2018