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" }, });
は機能しません。ログインコンポーネント内では、prop 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
、 '='で分割すると要素が1つだけのtmpになるため、コードでpar2に例外が発生します。
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からクエリを取得するには、を使用する必要があります。(URLのクエリがある場合)$ route.paramsに加えて、$ルートオブジェクトはまた、$ route.queryなど他の有用な情報を公開:ドキュメントから
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
私は渡す持っている理由.Thatさんvm
へnext
function.ItはVUEがinstance.Actuallyアクセスにrecommented方法ですvm
、それはVUEのインスタンスを表します
サーバーがphpを使用している場合、これを行うことができます。
const from = '<?php echo $_GET["from"];?>';
うまくいきます。