vue父子孙多级slot插槽传值

之前是封装的iview的table,但是现在iview的table数据量大100条分页卡顿换成vxe-table 详见上篇文章,所以变成三级传slot了  。。。

最外层组件

<IViewTable>
      <template v-slot:action="{ row }">
        <Dropdown
          transfer
          @on-click="
            e => {
              handleDropdownClick(e, row)
            }
          "
        >
          <div>
            处理
            <Icon type="ios-arrow-down"></Icon>
          </div>
          <DropdownMenu slot="list">
            <DropdownItem name="处置">处置</DropdownItem>
            <DropdownItem name="忽略">忽略</DropdownItem>
          </DropdownMenu>
        </Dropdown>
      </template>
    </IViewTable>

中间层组件

<vTable :table="table" :checkbox="checkbox" @on-selection-change="SelectionChange">
          <!-- 自定义插槽 -->
          <template v-for="item in table.columns" v-slot:[item.slot]="{ row }">
            <slot v-if="item.slot" :name="item.slot" :row="row"></slot>
          </template>
        </vTable>

最底层组件

 <vxe-column
        v-for="(column, index) in table.columns"
        :key="column.key + index"
        :field="column.key"
        :title="column.title"
        :min-width="column.minWidth"
        :width="column.width"
        :fixed="column.fixed"
        :align="column.align"
        :title-suffix="column.titleSuffix"
        :show-overflow="column.key !== 'action' ? 'tooltip' : false"
      >
        <!-- 渲染形式 -->
        <template #default="scope" v-if="column.render">
          <renderer :renderContent="column.render" :scope="scope"></renderer>
        </template>
        <!-- 自定义插槽 -->
        <template #default="scope" v-else-if="column.slot">
          <slot :name="column.slot" :row="scope.row"></slot>
        </template>
      </vxe-column>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码老祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值