首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DOM更改之前更改路由并在路由本身之外更改路由时发生的火灾事件?

在DOM更改之前更改路由并在路由本身之外更改路由时发生的火灾事件?
EN

Stack Overflow用户
提问于 2018-10-01 14:38:27
回答 1查看 666关注 0票数 1

我打开了a similar topic a few days ago,建议在路由组件定义中使用beforeRouteLeave

但是,我正在创建一个Vue组件,我将无法控制开发人员想要如何定义他们的路由组件。因此,我需要一种在我自己的组件中触发事件的方法,而不依赖于外部路由组件。

当从一条路由更改到另一条路由时,beforeDestroy会在DOM结构更改之后触发。

我尝试在组件定义中使用beforeUpdateupdated事件,但在DOM更改之前似乎没有任何事件触发。

代码语言:javascript
运行
复制
import Vue from 'vue'
import MyComponent from '../myComponent/' // <-- Need to fire the event here 
import router from './router'

Vue.use(MyComponent)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
}).$mount('#app')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-01 17:49:43

在Vue实例生命周期中,一旦DOM更改,钩子beforeDestroy就会被调用。

您很可能正在寻找一个beforeUnmount钩子,它介于mountedbeforeDestroy之间,但这是不可用的:

但是,您可以利用JavaScript hooks。有一个名为JavaScript的leave钩子,您可以在DOM更改之前访问它。

代码语言:javascript
运行
复制
leave: function (el, done) {
  // ...
  done()
},

要使其工作,您需要将元素包装在https://v2.vuejs.org/v2/guide/transitions.html#Transitioning-Single-Elements-Components包装组件中。

即。

代码语言:javascript
运行
复制
<transition
  :css="false"
  @leave="leave"
>
  <div>
    <!-- ... -->
  </div>
</transition>

..。

代码语言:javascript
运行
复制
methods: {
  leave(el, done) {
    // access to DOM element
    done()
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52593490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档