动态生成菜单时报错,不能多层获取路由meta下面的title字段
<template><p>{{ meneList }}</p><template v-for="item in meneList" :key="item.path"><el-menu-item v-if="!item.children"><template #title>{{ item.meta }}</template></el-menu-item></template>
</template>
<script setup lang="ts">
// 获取父组件传递过来的全部路由组件
defineProps(['meneList'])
</script>
获取item.meta.title,会报错,如下:
<template><p>{{ meneList }}</p><template v-for="item in meneList" :key="item.path"><el-menu-item v-if="!item.children"><template #title>{{ item.meta.title }}</template></el-menu-item></template>
</template>
<script setup lang="ts">
// 获取父组件传递过来的全部路由组件
defineProps(['meneList'])
</script>
发现如下操作就好了,加个?
<template><p>{{ meneList }}</p><template v-for="item in meneList" :key="item.path"><el-menu-item v-if="!item.children"><template #title>{{ item.meta?.title }}</template></el-menu-item></template>
</template>
<script setup lang="ts">
// 获取父组件传递过来的全部路由组件
defineProps(['meneList'])
</script>
这是因为循环的数组里面有未配置meta字段,当这个字段都没有的时候,meta.title就会报错,所以加个?进行判断,当有meta字段且有值的时候再进行取值。