踩坑1 defaultExpandAllRows不生效
最近收到一个需求,需要在表格中嵌套表格,并且默认子表格是默认展开的(效果如上图所示),在antd网站上搜索相关功能,发现理论上来讲,这个需求是可以用defaultExpandAllRows:true实现。
在线例子 这是antd提供的一个示例,展示了一个简单的表格套表格的示例代码,如果我们想实现默认展开的效果的话需要在expandable中追加defaultExpandAllRows:true的参数,我按照这样的想法修改codesandbox上的代码,发现可以实现想要的效果,于是开始修改自己的代码,突然发现defaultExpandAllRows不能生效,当下在思考是不是react版本或者antd版本的问题,所以在codesandbox上修改相应的版本与本地的版本一致,发现codesandbox上还是生效的,但是我本地不生效。
那问题在哪呢?经过长时间的尝试,我发现是defaultExpandAllRows这个参数只有在首次渲染时才会生效,由于父表格的数据我是从网络中获取的,所以在我首次渲染的时候父表格的dataSource的数据是null,所以defaultExpandAllRows不会生效;当dataSource的数据不是null的时候,父表格已经不是第一次渲染了,defaultExpandAllRows也不会生效。
所以我们只需要在获取完成父表格数据之后再去渲染Table,就能让defaultExpandAllRows生效啦!
踩坑2 点击➕号本来只想展开一行,发现所有的行的展开了
antd底层应该是根据dataSource里面每一行的数据中的key去标示每一行,如果每一行的数据中没有key的话,默认key都是undefiend,所以会出现点一个加号,每行都展开的效果,只需要给每行的数据追加一个属性key,给每个key赋予一个唯一的值即可。