vue+Ant design实现嵌套table(expandedRowKeys,expandIcon)

<a-table 
  :columns="columns" 
  :data-source="dataSource" 
  :pagination="false" 
  :expandIcon='expandFirstIcon'
  :expandedRowKeys.sync="firstExpandedRowKeys"
> 
	<!-- 第二层 table 数据 -->
    <template slot="expandedRowRender" slot-scope="value, data, index">
    	<a-table
          :columns="columns"
          :data-source="innerData"
          :pagination="false"
          :expandIcon='expandSecondIcon'
          :expandedRowKeys.sync="secondExpandedRowKeys"
        > 
        </a-table>
     </template>
</a-table>

secondExpandedRowKeys属性是选择要打开的行
值为一个下标的数组 [ 0 ]
expandSecondIcon是一个方法 用来实现 展开和关闭时的 图标

data(){
  return{
    columns,
    dataSource:[],//
    innerData:[],//内嵌table 数据
    firstExpandedRowKeys:[],//内嵌 打开的 行
  }
 },
methods:{
	//内嵌 第一层 图标判断
   expandFirstIcon(props){
     console.log(props);
     //如果有子数据 则显示 展开图标
     if(props.record.childList&&props.record.childList.length>0){
       return (
         <a-icon type="plus" onClick={(e) => {this.openFirstRow(props)}} />
       )
     } else {
        return;
      }
   },
   //打开事件
   openFirstRow(props){
   	  //props.expanded为true则为关闭
      if (props.expanded) {
        this.firstExpandedRowKeys = [];
        this.innerData = [];
      } else {
       //遍历数据列表
        this.dataSource.map((item,index)=>{
        	//将当前点击的 行 下标复制给firstExpandedRowKeys 来锁定展开的行
            if(item.id===props.record.id){
              this.firstExpandedRowKeys = [index];
              this.innerData = props.record.childList;
            }
        })
      }
   },
},

以此类推可以 继续 嵌套
在这里插入图片描述
我项目中一共三层,效果图

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐