我有一個button在我的專案當我點擊上面有兩個queries加URL
onClickBtn(){
this.$router.push({queries: {name:'kevin' , age:21} })
}
我有一個watch上$route
watch:{
$route:function(){
// call API
}
}
當我點擊那button幾次
watch叫我的API每一次雖然沒有已經改變
這給我帶來了問題
因為沒有什么已經改變的route,但API被稱為和相同的資料是
已收到 。
我應該怎么做才能避免呼叫API watch,在queries不改變?
uj5u.com熱心網友回復:
您在路由器上推送的物件總是不同的,這就是啟動 $route watch 的原因。您可以比較手表中收到的資料,以便在它們不同時呼叫 API:
watch:{
'$route' (newRoute, lastRoute){
// Check if query is different
// call API
}
}
uj5u.com熱心網友回復:
除了Cristian 提供的答案之外,您甚至可以在將新物件推送到路由器之前仔細檢查您的內容是否已更改。
像這樣
checkIfUpdateNeeded && this.$router.push({queries: {name: 'kevin', age:21 } })
這樣,您將擁有更少的移動部件,并且您不會在觀察者中觸發“無”,尤其是當您推動一個更大的物體并希望在兩個物體之間進行深度差異時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/348568.html
