【Vue3】解决 Props 没有默认值而报错的问题
先看代码,封装一个面包屑组件,里面的内容需要动态变化,于是用到了 props:
html
"<template>
<div>
<el-breadcrumb separator="/" class="ml-12 mt-2">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item><a href="/methods/zuzhi">解决方案</a></el-breadcrumb-item>
<el-breadcrumb-item>{{ lessons.cargoLessons[props.activeIndex].name }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
</template>
<script setup lang="ts">
const props = defineProps({
activeIndex: Number,
});
const lessons = ...
</script>
出现报错:activeIndex 可能未赋值。
解决方案
使用 Vue3的 withDefaults
方法,给 activeIndex
一个默认值:
html
<script setup lang="ts">
import { withDefaults, defineProps } from 'vue'
const props = withDefaults(defineProps<{
activeIndex: number
}>(), {
activeIndex: 0 // Assigning a default value of 0
});
const lessons = {
cargoLessons: [
...
]
}
</script>
在这个例子中,activeIndex 属性被赋予了一个默认值 0。这意味着如果没有为组件提供 activeIndex 属性,它将自动取值为 0。报错也就解决了。