javascript - λήψη ενημερωμένου ερωτήματος σε plugin του nuxt μετά τη φόρτωση της σελίδας
Λοιπόν, έχω ένα plugin με μερικές λειτουργίες μέσα σε αυτό, οι λειτουργίες θα πρέπει να ενημερώνουν τα ερωτήματα URL. Το πρόβλημα είναι ότι κάθε φορά που εκτελώ $global.changePage(2) ή $global.changeLimit(2), το console.log(query) επιστρέφει ένα κενό αντικείμενο και δεν επιστρέφει ενημερωμένα ερωτήματα στο URL.
Ξέρω ότι τα plugins του NuxtJS εκτελούνται μόλις φορτώσουμε τη σελίδα, αλλά υπάρχει κάποιος τρόπος να έχουμε ενημερωμένο query κάθε φορά που χρησιμοποιώ αυτές τις συναρτήσεις;
export default (ctx: NuxtConfig, inject: Inject) => {
const { app, query } = ctx;
const global = {
changePage (page: number) {
console.log(query);
app.router.push({
query: { ...query, page }
})
},
changeLimit(limit: number) {
console.log(query);
app.router.push({
query: { ...query, limit }
})
},
}
inject('global', global)
ctx.$global = global
}
Απάντηση #1
Απλά αφαιρέστε το ctx.$global=global από την τελευταία γραμμή του plugin σας.
Η μέθοδος inject που παρέχεται από το Nuxt αναλαμβάνει να κάνει το global αντικείμενό σας διαθέσιμο όπου χρειάζεται, οπότε δεν υπάρχει πραγματικά ανάγκη να αντικαταστήσετε την ιδιότητα ctx.$global.