解决vue中props对象中设置多个默认值的问题
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
1、遇到问题:
props中设置了默认值,但是获取时(获取父页面没有传的属性) 打印出来是undefined
子组件
props: { paramsObj: { type:Object, default:() => { return { tabList: [], tableFixedHeader: [], showHandleCol:false, handleType:[], isTagData:false, } } } },
父组件
<RealViewModel :paramsObj="params"></RealViewModel>
params: { type: "water", tabList: [ { name: "浓度数据", id: "ND" }, { name: "水域水质分析", id: "SY" } ], tableFixedHeader: [ {name:'时间',code:'DT',isFixed:true}, ] }
此时在子组件中,只能获取到父组件传过来的值,而没有传的属性没有了(下图)
2、原因:
props 默认值的作用:
它只在没有传参时才会被读取,并不会为你的参数对象补齐属性,
3、解决方法:
使用计算属性computed,解决 父页面不传参数情况
子组件
props: { paramsObj: { type:Object, default:() => { return {} } } }, computed:{ params(){ return Object.assign({ tabList: [], tableFixedHeader: [], showHandleCol:false, handleType:[], isTagData:false, },this.paramsObj); } },
页面中直接 params.isTagData
就能直接用了
打印一下看结果:自动给补齐了父页面没有传的属性(下图)
到此这篇关于解决vue中props对象中设置多个默认值的问题的文章就介绍到这了,更多相关vue props多个默认值内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!
相关文章
关于IDEA中的.VUE文件报错 Export declarations are not supported by cu
这篇文章主要介绍了关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10Vue路由钩子之afterEach beforeEach的区别详解
这篇文章主要介绍了Vue路由钩子 afterEach beforeEach区别 ,vue-router作为vue里面最基础的服务,学习一段时间,对遇到的需求进行一些总结。需要的朋友可以参考下2018-07-07Vue3中SetUp函数的参数props、context详解
我们知道setup函数是组合API的核心入口函数,下面这篇文章主要给大家介绍了关于Vue3中SetUp函数的参数props、context的相关资料,需要的朋友可以参考下2021-07-07
最新评论