vue

【Vue】基于$attrs和$listeners封装高级组件

2020-05-13  本文已影响0人  我的名字违规了

之前在做vue组件扩展的时候,遇到过一些xx的事情,比如基于element-ui的el-table进行组件扩展,支持render/slot双渲染模式,支持分页等。(假设新组件是zl-table)

实际封装中遇到一个巨坑问题是:el-table有那么多v-onv-bind,之前的处理方案是,在zl-table中用props和$emit转接到el-table上,平白增加很多工作量,而且如果el-table扩展了,zl-table也要扩展。当时就在想,要是能用react就好了,{...props}短短一句全搞定。

相信跟我遇到同样问题的朋友不少,今天重新看官方文档,发现2.4.0新增了两个属性vm.$attrsvm.$listeners(表白尤大)。上代码

<!-- zl-table内 -->
<el-table v-on="$attrs" v-bind="$listeners">
  <!-- ... -->
</el-table>

官方文档

上一篇 下一篇

猜你喜欢

热点阅读