Vue3 Props没有默认值但报错的解决方案
Vue3解决 Props 没有默认值而报错的问题
先看代码,封装一个面包屑组件,里面的内容需要动态变化,于是用到了 props:
"<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" rel="external nofollow" >解决方案</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
一个默认值:
<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。报错也就解决了。
拓展:vue中props设置默认值
一般情况下
props写法
props:{ obj: { type: Object, default: () => {} }, arr: { type: Array, default: () => [] } }
但是,如果初始化的时候就使用里面的值,可能会出现没有该值的情况,此时就会报错。
应该使用以下有默认值的写法
props:{ obj: { type: Object, default: function () { return { obje: '' } } }, arr: { type: Array, default: function () { return [] } } }
到此这篇关于Vue3 Props没有默认值但报错的解决方案的文章就介绍到这了,更多相关Vue3 Props报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Vue常见错误Error in mounted hook解决办法
这篇文章主要给大家介绍了关于Vue常见错误Error in mounted hook的解决办法,出现这样的问题,会发现跟声明周期钩子有关系,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2023-07-07vue axios sessionID每次请求都不同的原因以及修改方式
这篇文章主要介绍了vue axios sessionID每次请求都不同的原因以及修改方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
最新评论