Vuejs2 vue路由器在路由器之前已触发两次

Vuejs2 vue路由器在路由器之前已触发两次,vuejs2,vue-component,vue-router,Vuejs2,Vue Component,Vue Router,我正在尝试创建一个全局“未保存的更改确认”功能 因此,每当编辑某个表单时,我都会设置一个全局vuex状态,表示有未保存的更改,然后我希望用户在路由更改之前进行确认 我已经创建了一个全局mixin,它可以正常工作,除非有嵌套的路由器视图,然后beforeRouteLave被触发两次,然后next()函数就不能工作了 这就是它的样子: Vue.mixin({ computed: { unsavedChanges() { return this.$sto

我正在尝试创建一个全局“未保存的更改确认”功能

因此,每当编辑某个表单时,我都会设置一个全局vuex状态,表示有未保存的更改,然后我希望用户在路由更改之前进行确认

我已经创建了一个全局mixin,它可以正常工作,除非有嵌套的路由器视图,然后beforeRouteLave被触发两次,然后next()函数就不能工作了

这就是它的样子:

Vue.mixin({
    computed: {
        unsavedChanges() {
            return this.$store.getters["helpers/unsavedChanges"]
        }
    },
    beforeRouteLeave (to, from, next) { 
        if (this.unsavedChanges) {
            this.$Modal.confirm({
                title: 'Unsaved changes',
                content: '<p>Are you sure you wish to leave the page?</p>',
                okText: 'Continue',
                cancelText: 'Cancel',
                onOk: () => {
                    next()
                },
                onCancel: () => {
                    next(false)
                }
            });
        }
    } 
})
Vue.mixin({
计算:{
未录制的更改(){
返回此。$store.getters[“helpers/unsavedChanges”]
}
},
在离开之前(到、从、下一个){
如果(此未保存的更改){
这是$Modal.confirm({
标题:“未保存的更改”,
内容:“您确定要离开页面吗?

”, okText:'继续', cancelText:“取消”, 小野:()=>{ 下一个() }, onCancel:()=>{ 下一个(假) } }); } } })
只要没有子路由器视图,它就可以正常工作,但是如果有子路由器视图,则路由器不会更改,即使单击“继续”并调用next()函数


我如何解决这个问题?谢谢。

还要添加您的路由器代码