最近看到一个比较有意思的问题就是:vue中v-for和v-if同时在一个标签中,浏览器解析的时候会先解析v-for呢还是v-if。为了探明究竟,做了一个小测试,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="App">
<p v-for="item in cha" v-if="isok">{{item.a}}</p>
</div>
<script src="vue.js"></script>
<script>
const App = new Vue({
el: "#App",
data() {
return {
cha: [
{ a: "as" },
{ b: "ad" },
]
}
},
computed: {
isok() {
return this.cha && this.cha.length > 0;
}
},
})
console.log(App.$options.render);
</script>
</body>
</html>
输出结果是:
可以看出解析渲染过程是先进入循环遍历数组,然后进行条件判断。