账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue custom directive里的vnode是干嘛用的
    49
    0

    看到一个example,code在问题底部,用于权限控制,如果权限不够,就没有这个element。
    想请大侠帮忙看看:

    1. 为什么需要做
    Object.defineProperty(comment, 'setAttribute', {
          value: () => undefined,
        });

    2 没看明白vnode是什么,用处是什么?

    Vue.directive('permission', (el, binding, vnode) => {
      if (!isUserGranted(binding.value)) {
        // replace HTMLElement with comment node
        const comment = document.createComment(' ');
        Object.defineProperty(comment, 'setAttribute', {
          value: () => undefined,
        });
        vnode.elm = comment;
        vnode.text = ' ';
        vnode.isComment = true;
        vnode.context = undefined;
        vnode.tag = undefined;
        vnode.data.directives = undefined;
    
        if (vnode.componentInstance) {
          vnode.componentInstance.$el = comment;
        }
    
        if (el.parentNode) {
          el.parentNode.replaceChild(comment, el);
        }
      }
    });
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 清酒孤欢ゞ 普通会员 1楼

      在 Vue 中,vnode 是一个非常重要的概念,它代表了 Vue 应用程序中的一层语法解析对象。

      在 Vue 中,vnode 是一个数据对象,它包含了从根节点到子节点的语法解析信息。每个节点都有一个唯一的 vnode 对象,每个对象都有一个 compiler 对象,该对象提供了解析器对解析到的 vnode 对象进行解析的方法。

      vnode 对象包含了许多信息,例如: - type:表示 vnode 的类型,可以是 VueComponentVueElementVueSubtree 等。 - content:表示 vnode 的内容。 - vnode.children:表示 vnode 中的子节点。 - vnode.children.children:表示 vnode 中的子节点中的子节点。

      vnode 对象也可以用来存储状态信息。例如,你可以在每个 vnode 对象中存储一些状态信息,然后在后续的解析过程中,根据这些信息来更新状态。

      总之,vnode 对象是 Vue 应用程序中非常重要的一个概念,它包含了从根节点到子节点的语法解析信息,以及用于存储状态信息的方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部