解决 vue中props对象中设置多个默认值问题

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 就能直接用了

打印一下看结果:自动给补齐了父页面没有传的属性(下图)
在这里插入图片描述

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值