首页 > 解决方案 > 即使 el 在 Vue 中不存在,为什么挂载的钩子也会触发?

问题描述

我有一个简单的 vue 实例:

var vm = new Vue({
    el: "#myEl",
    data: {
        parent: null,
        posts: [],
        total: 0,
        currentPage: 0
    },
    mounted: function () {
        alert("mounted");
    }
});

一切都很好,#myEl页面上何时存在,但如果不存在,则无论如何都会触发安装程序挂钩。

但为什么?没有要挂载实例的元素,那为什么还要挂载呢?我应该在 vue-way 中做些什么来检查el存在?

标签: javascriptvue.jsvuejs2

解决方案


从埃文你

当 el 不可用时,组件会挂载在内存中(类似于不带参数调用 $mount() )。

控制台中有警告告诉你找不到目标el。

如果您不希望这种情况发生,请将实例包装在元素检查中,例如

if(document.querySelector('#el')){ ... }


推荐阅读