首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在一个组件上用过$mount(),有没有办法用$unmount()引用呢?

我在一个组件上用过$mount(),有没有办法用$unmount()引用呢?
EN

Stack Overflow用户
提问于 2019-05-03 19:28:49
回答 1查看 2.4K关注 0票数 2

我意识到这不是框架最初打算使用的方式。我想要做的是以编程方式将组件挂载到页面,然后以编程方式将其卸载。

代码语言:javascript
复制
const Component = Vue.extend({
    template: '<div>This works</div>'
})
const c = new Component()
c.$mount()
document.getElementById('app').appendChild(c.$el)

我想从这里做的是清理组件

代码语言:javascript
复制
c.$unmount()
c.$destroy()

是否有类似这样的东西可以删除侦听器并执行完全清理?

或者我可以简单地执行以下操作而不承担任何后果

代码语言:javascript
复制
document.getElementById('#app').innerHTML = ''
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-03 19:50:06

您可以在新的DOM元素上调用$mount,将component.$el附加到#app,然后在$destroy之后删除它。

代码语言:javascript
复制
const component = new Vue({
  data() {
    return {
      message: "Hello"
    }
  },
  template: "<p>{{message}}<p>",
});

const app = document.getElementById("app");

// Mounting on a empty div created programatically
component.$mount(document.createElement("div"));
app.appendChild(component.$el);

setInterval(() => component.message = "Hello " + Date.now(), 100);

setTimeout(() => {
  // destroying the component and removing it from DOM
  component.$destroy();
  app.removeChild(component.$el); 
}, 2000);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>

<div id="app"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55968923

复制
相关文章

相似问题

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