美文网首页程序员
v-if和v-for的优先级

v-if和v-for的优先级

作者: 墨子柚 | 来源:发表于2020-06-07 11:07 被阅读0次

使用vue-template-complier

  1. 首先我们运行下面一段代码
let compiler = require('vue-template-compiler');
const ast = compiler.compile('<div v-if="true" v-for="i in 3"></div>');
console.log(ast.render)

2.控制台打印:

with(this){return _l((3),function(i){return (true)?_c('div'):_e()})}

3.解释:
_l()表示要渲染一个列表,这个列表要渲染三项,每次渲染的时候都会执行方法:function(i){return (true)?_c('div'):_e()},该方法内部会判断是否为true,true则会渲染div,否则为空。

4.总结:
v-for优先级高于v-if

5.解决办法:
那么遇到上面的情况,我们如何解决呢?只需要用template模板标签套一层即可,如下所示:

let compiler = require('vue-template-compiler');
const ast = compiler.compile('<template v-if="true"><div v-for="i in 3"></div></template>');
console.log(ast.render)

6.控制台打印

with(this){return (true)?_l((3),function(i){return _c('div')}):_e()}

相关文章

网友评论

    本文标题:v-if和v-for的优先级

    本文链接:https://www.haomeiwen.com/subject/ewzqtktx.html