批量新增查询页面,查询条件中有个重复性极高的下拉框,每个页面重复请求下拉框数据,然后绑定到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"可以直接透传绑定的事件
这样就解决了二次封装组件的标签属性透传问题!
组件化开发:如何通过$v-bind$attrs传递下拉框属性
文章讲述了在开发中遇到的重复性高下拉框问题,如何通过封装组件并利用$v-bind:$attrs和$v-on:$listeners来实现在子组件中接收并处理父组件传递的style、v-model等属性,简化父子组件间的参数传递,提高代码复用效率。
2万+

被折叠的 条评论
为什么被折叠?



