Вю.параметры запроса js
Как я могу получить параметры запроса в vue.js?
http:://somesite.com?test=yay
Не могу найти способ получить или мне нужно использовать pure JS или какую-то библиотеку для этого?
5 ответов:
Согласно документам объекта маршрута, у вас есть доступ к объекту
$route
из ваших компонентов, которые предоставляют то, что вам нужно. В этом случае//from your component console.log(this.$route.query.test) // outputs 'yay'
Более подробный ответ, чтобы помочь новичкам VueJs.
<script src="https://unpkg.com/vue-router"></script> var router = new VueRouter({ mode: 'history', routes: [] }); var vm = new Vue({ router, el: '#app', mounted: function() { q = this.$route.query.q console.log(q) }, });
Без vue-route разбейте URL
var vm = new Vue({ .... created() { let uri = window.location.href.split('?'); if (uri.length == 2) { let vars = uri[1].split('&'); let getVars = {}; let tmp = ''; vars.forEach(function(v){ tmp = v.split('='); if(tmp.length == 2) getVars[tmp[0]] = tmp[1]; }); console.log(getVars); // do } }, updated(){ },
Другое решение https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search :
var vm = new Vue({ .... created() { let uri = window.location.search.substring(1); let params = new URLSearchParams(uri); console.log(params.get("var_name")); }, updated(){ },
Вы можете использовать Vue-маршрутизатор.У меня есть пример ниже:
Url:
www.example.com?name=john&lastName=doe
new Vue({ el: "#app", data: { name: '', lastName: '' }, beforeRouteEnter(to, from, next) { if(Object.keys(to.query).length !== 0) { //if the url has query (?query) next(vm => { vm.name = to.query.name vm.lastName = to.query.lastName }) } next() } })
Примечание: в функции
beforeRouteEnter
мы не можем получить доступ к свойствам компонента, таким как:this.propertyName
.Вот почему я должен передатьvm
вnext
function.It это рекомендуемый способ доступа к экземпляру vue.На самом делеvm
он обозначает экземпляр vue
Другой способ (предполагая, что вы используете
vue-router
) - сопоставить запрос param с prop в вашем маршрутизаторе. Тогда вы можете рассматривать его как любой другой реквизит в вашем компонентном коде. Например, добавьте этот маршрут;{ path: '/mypage', name: 'mypage', component: MyPage, props: (route) => ({ foo: route.query.foo }) }
Тогда в вашем компоненте вы можете добавить опору как обычно;
props: { foo: { type: String, default: null } },
Тогда он будет доступен как
this.foo
, и вы можете делать с ним все, что захотите (например, установить наблюдателя и т. д.)