antd table之disabled的复选框被选中了?

4,049 阅读1分钟

使用antd 的table实现多选功能,具体功能如下:

复选框按需判断是否disabled,被disabled的复选框不能被选中。   

但是在应用的时候发现点击全选后,被disabled的复选框占用了可用复选框的名额,出现了如下情况

本应该被选中的多选框没有选中,但是上面被disabled的复选框却选中了。

原来是table是根据rowKey属性来区分每条数据的,这和react key的基本意义大致一样。如果没有设置,那么就默认取用每条数据的索引。并且这个rowKey对于table的刷新也是有积极意义的,如果发现该条数据没有变化,那么table就不会在请求接口的时候重刷这条数据。
刚才的情况下,table知道应该被选中的条目的总数量n,但是并不能区分哪条应该被选中,所以就自上而下挨个选够n条...所以就出现了上面鸠占鹊巢的情况。

在应用table中最好还是要设置唯一的rowKey才能更好的优化性能,并且一定不要rowKey设置成索引值,以防出现不必要的bug。

生活的一部分是工作,工作的一部分是解决问题取悦生活,所以好好生活,好好工作,好好热爱(●ˇ∀ˇ●)