Berikut contohnya di dokumen:
// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
Ref: https://router.vuejs.org/en/essentials/navigation.html
Seperti yang disebutkan dalam dokumen tersebut, router.replace
berfungsi sepertirouter.push
Jadi, Anda tampaknya sudah benar di kode sampel yang dipermasalahkan. Tapi saya pikir Anda mungkin perlu memasukkan parameter name
atau path
juga, sehingga router memiliki beberapa rute untuk dinavigasi. Tanpa name
atau path
, itu tidak terlihat sangat berarti.
Inilah pemahaman saya saat ini:
query
bersifat opsional untuk router - beberapa info tambahan bagi komponen untuk membuat tampilan
name
atau path
wajib - ini memutuskan komponen apa yang akan ditampilkan di <router-view>
.
Itu mungkin hal yang hilang dalam kode sampel Anda.
EDIT: Detail tambahan setelah komentar
Sudahkah Anda mencoba menggunakan rute bernama dalam kasus ini? Anda memiliki rute dinamis, dan lebih mudah untuk menyediakan parameter dan kueri secara terpisah:
routes: [
{ name: 'user-view', path: '/user/:id', component: UserView },
// other routes
]
dan kemudian dalam metode Anda:
this.$router.replace({ name: "user-view", params: {id:"123"}, query: {q1: "q1"} })
Secara teknis tidak ada perbedaan antara di atas dan this.$router.replace({path: "/user/123", query:{q1: "q1"}})
, tetapi lebih mudah untuk menyediakan parameter dinamis pada rute bernama daripada membuat string rute. Tetapi dalam kedua kasus, parameter kueri harus diperhitungkan. Dalam kedua kasus tersebut, saya tidak dapat menemukan sesuatu yang salah dengan cara penanganan parameter kueri.
Setelah Anda berada di dalam rute, Anda dapat mengambil parameter dinamis sebagai this.$route.params.id
dan parameter kueri Anda sebagai this.$route.query.q1
.