当前位置: 代码迷 >> 综合 >> Vue : Custom elements in iteration require 'v-bind:key' directives.
  详细解决方案

Vue : Custom elements in iteration require 'v-bind:key' directives.

热度:73   发布时间:2023-12-22 10:01:18.0

使用 element-ui 去遍历路由做侧边栏,eslint 检测出现一个错误 ??

Vue : Custom elements in iteration require ‘v-bind:key’ directives.

<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden"><el-submenu :index="index+''" v-if="!item.leaf"><template slot="title"><i :class="item.iconCls"></i>{
   {item.name}}</template><el-menu-item v-for="child in item.children" :index="child.path" :key="child.path" v-if="!child.hidden">{
   {child.name}}</el-menu-item></el-submenu><el-menu-item v-if="item.leaf && item.children.length > 0" :index="item.children[0].path"><i :class="item.iconCls"></i>{
   {item.children[0].name}}</el-menu-item>
</template>

警告 ??

Custom elements in iteration require 'v-bind:key' directives.

大白话,自定义元素需要一个 v-key : value 指令。
?? 注意上面 key 值不要用对象或是数组作为 key ,用 stringnumber 作为key,否则报错:[Vue warn] Avoid using non-primitive value as key, use string/number value instead.

将代码修改为:

<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden"><el-submenu :index="index+''" v-if="!item.leaf" :key="item.name"><template slot="title"><i :class="item.iconCls"></i>{
   {item.name}}</template><el-menu-item v-for="child in item.children" :index="child.path" :key="child.path" v-if="!child.hidden">{
   {child.name}}</el-menu-item></el-submenu><el-menu-item v-if="item.leaf && item.children.length > 0" :index="item.children[0].path" :key="item.name"><i :class="item.iconCls"></i>{
   {item.children[0].name}}</el-menu-item></template>

错误消失。


关闭Eslint检测

build 处关闭 eslint 检测

...(config.dev.useEslint ? [createLintingRule()] : []),
  相关解决方案