父子组件传值之标签属性透传

批量新增查询页面,查询条件中有个重复性极高的下拉框,每个页面重复请求下拉框数据,然后绑定到selectOptions中,提交查询条件完成后通过form表单提交数据,想封装成组件,这样在页面中就只需要引入组件就可以了,实现过程中发现HTML标签中的属性不好传递,例如v-model,废话不多说,上解决方案

v-bind="$attrs"

element ui为例,子组件组件name为useSelect,子组件中的template中的内容如下

<el-select
    v-bind="$attrs"
    v-on="$listeners"
  >
    <el-option
      v-for="item in selectOptions"
      :key="item.id"
      :label="item.label"
      :value="item.id"
    >
    </el-option>
  </el-select>

在父组件中的使用

<use-select
  style="width:100%"
  v-model={id}
  placeholder="请选择"
></use-select>

$attrs的作用就是将<use-select>标签中的style,v-model,placeholder属性传递到子组件中,这样可以减少很多props来回传参,而且v-model这种双向数据绑定操作直接透传使用起来也很方便,用最少的代码解决这个父子组件参数的传递

同理v-on="$listeners"可以直接透传绑定的事件

这样就解决了二次封装组件的标签属性透传问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值