Vue.jsでクエリパラメータを取得する方法を教えてください。
http:://somesite.com?test=yay
フェッチする方法が見つからないのですか、それとも純粋なJSまたは他のライブラリを使用する必要がありますか?
ルートオブジェクト のドキュメントによれば、あなたはあなたのコンポーネントから$route
オブジェクトにアクセスすることができます。この場合
//from your component
console.log(this.$route.query.test) // outputs 'yay'
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(){
},
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)
},
});
もう1つの方法は(vue-router
を使用していると仮定して)、クエリパラメータをルーターのプロップにマッピングすることです。それからあなたはそれをあなたのコンポーネントコードの他の小道具のように扱うことができます。たとえば、この経路を追加します。
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
それからあなたのコンポーネントの中に、通常通りに小道具を追加することができます。
props: {
foo: {
type: String,
default: null
}
},
それがthis.foo
として利用可能になるでしょう、そしてあなたはそれを使ってあなたが望む何でもすることができます(ウォッチャーを設定するなどのように)
あなたは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
関数に渡したのはそのためです。 vueインスタンスにアクセスします。実際はvueインスタンスを表すvm
この日付の時点で、正しい方法は次のとおりです(変更された理由がわかりません)。
this.$route.params.yourProperty instead of this.$route.query.yourProperty