Vue vue/cli3 与 vue/cli4 v-for 和 v-if 一起使用冲突

问题描述

异常信息:[vue/no-use-v-if-with-v-for]
The 'this.$router.options.routers' 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'.eslint-plugin-vue 
,如下图:

Vue vue/cli3 与 vue/cli4 v-for 和 v-if 一起使用冲突_第1张图片

Vue vue/cli3 与 vue/cli4 v-for 和 v-if 一起使用冲突_第2张图片

原因分析:
        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标签进行包裹即可,因在该标签无特殊含义,代码如下:


           

上面代码为vue/cli4中写法,貌似vue/cli3中可以直接像下面这样写:

                   

                    v-for="(item,index) in this.$router.options.routers"

                    :key="index"

                    v-if="!item.hidden">

                       

                           

                            :index="children.path"

                            v-for="(children,index) in item.children"

                            :key="index">{{children.name}}

你可能感兴趣的:(VUE,vue.js,javascript,前端)