|
警告:
<template> cannot be keyed. Place the key on real elements instead 代码: <template v-for="(item,index) in menulist" :key="index">
<el-menu-item v-if="item.menuChilds.length==0" :index="(index+1)+''" >
<i class="el-icon-menu"></i>
<span slot="title"> pw_item.menuName</span>
</el-menu-item>
<template v-else>
<el-submenu :index="(index+1)+''">
<template slot="title">
<i class="el-icon-location"></i>
<span> pw_item.menuName</span>
</template>
<el-menu-item :key="index+'-'+subindex" v-for="(submenu,subindex) in item.menuChilds" :index="(index+1)+'-'+(subindex+1)">
<i class="el-icon-menu"></i>
<span slot="title"> pw_submenu.menuName</span>
</el-menu-item>
</el-submenu>
</template >
</template >原因: 用key不能提升性能,是为了防止Vue默认的元素复用导致某些情况下出现数据绑定渲染问题,而template是虚拟节点,不存在复用,如果你想要绑定的话,给下面的p和span标签绑定就好,一般只需要给和数据绑定有关的元素绑定key值 解决方案: 方案一:改用,类似于div,p 这类标签 方案二:将key属性加到子元素里,不写在<template>中即可,代码如下: <template v-for="(item,index) in menulist" >
<el-menu-item :key="index" v-if="item.menuChilds.length==0" :index="(index+1)+''" >
<i class="el-icon-menu"></i>
<span slot="title"> pw_item.menuName</span>
</el-menu-item>
<template v-else>
<el-submenu :key="index" :index="(index+1)+''">
<template slot="title">
<i class="el-icon-location"></i>
<span> pw_item.menuName</span>
</template>
<el-menu-item :key="index+'-'+subindex" v-for="(submenu,subindex) in item.menuChilds" :index="(index+1)+'-'+(subindex+1)">
<i class="el-icon-menu"></i>
<span slot="title"> pw_submenu.menuName</span>
</el-menu-item>
</el-submenu>
</template >
</template >参考 :https://segmentfault.com/q/1010000015979084?sort=created |
|
|