报错代码:
<el-submenu index="1" v-for="(item,index) in this.$router.options.routes"
:key="index"
v-if="!item.hidden">
<template slot="title">
<i class="el-icon-location"></i>
<span>{{item.name}}</span>
</template>
</el-submenu>
原因分析:
error The ‘this.$router.options.routes’ expression inside ‘v-for’ directive should be replaced with a computed property that returns filtered array instead. You should not mix ‘v-for’ with ‘v-if’ vue/no-use-v-if-with-v-for
原因:v-for的优先级会高于v-if,因此v-if会重复运行在每个v-for中。
解决方法
将v-for用template标签进行包裹即可,因在该标签无特殊含义。
<template v-for="(item,index) in this.$router.options.routes">
<el-submenu index="1"
:key="index"
v-if="!item.hidden">
<template slot="title">
<i class="el-icon-location"></i>
<span>{{item.name}}</span>
</template>
</el-submenu>
</template>