Як я можу отримати параметри запиту у Vue.js?
Напр http://somesite.com?test=yay
.
Не можете знайти спосіб отримати чи мені для цього потрібно використовувати чистий JS чи якусь бібліотеку?
Як я можу отримати параметри запиту у Vue.js?
Напр http://somesite.com?test=yay
.
Не можете знайти спосіб отримати чи мені для цього потрібно використовувати чистий JS чи якусь бібліотеку?
Відповіді:
Згідно з документами об’єкта маршруту , у вас є доступ до $route
об'єкта зі своїх компонентів, які розкривають те, що вам потрібно. В цьому випадку
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
це справді буде дублікатом, оскільки йому потрібно буде використовувати стандартні методи JS.
vue-router
тег і додав його.
return next({ name: 'login', query:{param1: "foo" }, });
не працює. всередині компонента входу опора param1
не визначена.
Без 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(){
},
location.href
коли є в location.search
наявності? developer.mozilla.org/en-US/docs/Web/API/…, наприклад, var querypairs = window.location.search.substr(1).split('&');
також розділення пар імен-значень на запит на '=' не завжди буде працювати, оскільки ви також можете передавати іменовані параметри запиту без значення; Наприклад, ?par1=15&par2
ваш код тепер створить виняток у par2, оскільки розщеплення на '=' призведе до tmp з лише 1 елементом.
undefined
в getVars['par2']
.
Більш детальна відповідь, щоб допомогти новачкам 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)
},
});
<script src="https://unpkg.com/vue-router"></script>
new Vue({ router, ... })
недійсний синтаксис.
Інший спосіб (якщо припустити, що ви використовуєте vue-router
) - зіставити параметр запиту на опору у вашому маршрутизаторі. Тоді ви можете ставитися до цього, як і до будь-якої іншої опори у коді компонента. Наприклад, додайте цей маршрут;
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
Тоді у своєму компоненті ви можете додати опору як звичайну;
props: {
foo: {
type: String,
default: null
}
},
Тоді він буде доступний як, this.foo
і ви можете робити все, що завгодно з ним (наприклад, встановити годинник тощо)
Станом на цю дату правильним способом згідно з документами про динамічну маршрутизацію є:
this.$route.params.yourProperty
замість
this.$route.query.yourProperty
query
для отримання запитів із URL-адреси. З Документів: Окрім $ route.params, об’єкт $ route також пропонує іншу корисну інформацію, таку як $ route.query (якщо в URL-адресі є запит)
Ви можете використовувати vue-router. У мене є приклад нижче:
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 є recommented способом доступу до вю instance.Actually vm
це означає вю , наприклад
Ви можете отримати, використовуючи цю функцію.
console.log(this.$route.query.test)
Якщо ваш сервер використовує php, ви можете це зробити:
const from = '<?php echo $_GET["from"];?>';
Просто працює.