2017-09-26 3 views
0

Je suis confronté à un problème stupide. Dans une application Web (ma pile est vue + vuex + vue-routeur) Je suis totalement incapable de synchroniser l'état de mon magasin avec la page affichée par l'utilisateur.Travailler avec l'API html5 history et Vue

Lorsqu'un utilisateur déclenche le bouton Précédent ou Suivant, il déclenche le même événement onpopstate qui ne donne absolument aucune information sur la «direction» ou le nombre de pages. Seul le tableau key dans l'objet state semble être à peine utilisable (en le sauvegardant quand on va à de nouveaux endroits et en devinant où l'utilisateur est allé onpopstate) mais je ne sais même pas où la "porte" correspond à "la clé". J'ai donc pensé à suivre manuellement la clé d'état de l'historique et à deviner où l'utilisateur se trouvait, mais je suppose que ce ne serait pas compatible, et c'est aussi un code lourd à soulever.

Voici ma question: Ai-je manqué un élément clé dans l'API html5, comment pourrais-je faire (et garder le code/logique minimaliste)?

Merci d'avance!

EDIT: rebaptisé le titre et a ajouté les informations

EDIT2: vuex-routeur-synchronisation est inappropriée car elle ne fournit que les informations d'itinéraire sur le côté vuex et fait état du routeur pas vraiment la synchronisation et de l'état du magasin ... à mauvais

PS: s'il vous plaît faire des définitions non c/p, lire attentivement, pensez

Répondre

1

onpopstate fournit l'objet d'état dans event.state en corrélation avec la place respective dans l'histoire de votre application.

Ecrivez votre application afin que la fourniture de cet objet d'état englobe tout l'état de votre application, quel que soit le temps. Je vous recommande de lire à propos de State pattern, et de comprendre ce que "état" signifie, par exemple.

la condition particulière que quelqu'un ou quelque chose se trouve à un moment précis.

L'implication que je fais est que vous devriez pas besoin de connaître l'emplacement relatif dans l'histoire de votre application est, parce que event.state devrait être tous vos besoins d'application afin de déterminer quoi rendre.

+0

Je sais ce que signifie l'état et il est insultant juste c/p la définition, mais ce n'est pas grave. Oui, évidemment j'ai pensé utiliser l'état comme ... un état mais je veux un minimum de code/logique fonctionnant avec vue puisque j'utilise la pile complète Vue et l'état de mon application est géré par mon magasin comme indiqué dans ma question. Aussi vous avez peut-être mal lu ma question, je n'ai pas besoin de savoir où est l'utilisateur, juste ** jusqu'où il est allé ** et ** dans quelle direction **. La prochaine fois, prenez plus de temps pour vous demander "ai-je vraiment compris la question", "quelles sont les implications de la question", "puis-je y répondre". Merci. – rmNyro

+0

Je n'ai pas mal lu la question, et il n'y avait aucune intention d'insulter. Cela ressemble plus à un problème conceptuel auquel vous faites face, et puisque votre question était «comment le feriez-vous? J'ai pensé que je donnerais un aperçu de la façon dont vous devriez penser à "état". Lorsque vous appelez 'history.pushState()' ou 'history.replaceState()', vous devez passer un objet qui référence ou remplace complètement l'état dans votre magasin, afin que la synchronisation soit simplement une recherche, plutôt qu'une sorte de calcul basé sur "jusqu'où dans quelle direction".Les applications avec état ne devraient pas se préoccuper du concept de "temps". –