Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第 147 题:v-if、v-show、v-html 的原理是什么,它是如何封装的? #307

Open
yygmind opened this issue Oct 31, 2019 · 6 comments
Labels

Comments

@yygmind
Copy link
Contributor

yygmind commented Oct 31, 2019

No description provided.

@Leader755
Copy link

v-if:当隐藏结构时该结构会直接从整个dom树中移除;

v-show:当隐藏结构时是在该结构的style中加上display:none,结构依然保留。

@zeroone001
Copy link

v-if: Watcher监听数据变化,然后,render函数生成VNode对象,patch方法对比新旧VNode, DOM Diff 算法修改真正的DOM元素

@brady0316
Copy link

v-if会调用addIfCondition方法,生成vnode的时候会忽略对应节点,render的时候就不会渲染;
v-show会生成vnode,render的时候也会渲染成真实节点,只是在render过程中会在节点的属性中修改show属性值,也就是常说的display;
v-html会先移除节点下的所有节点,调用html方法,通过addProp添加innerHTML属性,归根结底还是设置innerHTML为v-html的值

@yygmind yygmind added the Vue label Dec 16, 2019
@JaykeyGuo
Copy link

v-if会调用addIfCondition方法,生成vnode的时候会忽略对应节点,render的时候就不会渲染;
v-show会生成vnode,render的时候也会渲染成真实节点,只是在render过程中会在节点的属性中修改show属性值,也就是常说的display;
v-html会先移除节点下的所有节点,调用html方法,通过addProp添加innerHTML属性,归根结底还是设置innerHTML为v-html的值

所以在使用v-html的时候可能会存在XSS攻击的漏洞,被植入可执行的脚本

@yangmin4052
Copy link

如何根据v-if的原理写一个v-permission,要求切换权限时节点可以被删除,也可以在删除后被添加回来

@yft
Copy link

yft commented Aug 21, 2021

如何根据v-if的原理写一个v-permission,要求切换权限时节点可以被删除,也可以在删除后被添加回来

https://stackoverflow.com/questions/43003976/a-custom-directive-similar-to-v-if-in-vuejs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants