Web-App-Single-Page-Anwendung wird mit Vue Vue-Router geschrieben.
Einige Seiten müssen daran gehindert werden, zurückzugehen. Ich habe im Routing-Meta-Informations-Meta geschrieben, ob die aktuelle Seite zurückgehen kann, z.
Ich habe die Informationen und die Möglichkeit zum Deaktivieren der Rückkehr gefunden:
history.pushState(null, null, location.href)
Das vorherige Projekt verwendete vue1.0, die Lösung ist
1. 在全局的router.beforeEach 里面 判断当前路由的handler里面的allowBack变量是否为false
2. 如果为false 则 history.pushState(null, null, location.href)
Jetzt wechsle ich zu vue2.0, die ursprüngliche Methode funktioniert nicht mehr,
Das Problem ist jetzt, dass ich nicht weiß, wo ich den Code „history.pushState(null, null, location.href)“ ablegen soll.
Oder haben Sie andere Lösungen? Danke! !
Tatsächlich ist das Hauptverwendungsszenario folgendes:
Klicken Sie auf die Tableiste, um zu einer anderen Seite zu wechseln, und klicke auf die Tableiste, um zu Seite b zu gelangen. Ich kann nicht durch Drücken der Eingabetaste zu Seite a zurückkehren. aber ich kann zu Seite a gehen, indem ich auf die Tableiste klicke
自问自答.....
需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换
整理一下解决方法 和 使用方法:
1.在路由配置中给这个路由添加meta信息,比如:
2.在全局的router.beforeEach 函数里面获取allowBack的状态,同时更新vuex的allowBack的值,如:
这段代码得写在next()的后面,因为写在next()前面location.href并不是to的地址,这点跟vue1.0有点不同
3.接下来就是最核心的了,在app.vue的mounted里面注册onpopstate事件:
去掉history.pushState(null, null, location.href) 也能防止后退,但是组件会重新渲染,所以这部分也很关键
试试这样看看