react项目中遇到的坑

table表格checkbox全选

模态框中嵌入表格并且设置了rowselection属性,默认设置,未清算的数据是被选中


image.png

const rowSelection ={
selectedrRowKeys,
onChange:(selectedRowKeys, selectedRows)=>{

},
getCheckboxProps:record=>({
defaultChecked: record.cDealFlag == "0_××××",
checked:表达式?true:false,
})
}
首先defaultChecked是会起到默认勾选的效果,但是如果用代码实现勾选去掉的时候,这个属性不管用,checked会生效,再者就是,如果默认全部勾选的时候,checked也能达到同样的效果,但是表头的那个chebox框没选,所以我就用了defaultChecked+checked;
其实我看官方文档用的是selectedrRowKeys,取消选择的时候,只要把对应的那条记录的唯一标志从selectedrRowKeys中删除然后再setState更新就ok了,奈何用了各种方式就是不更新,所以选择了上面的方法取代。

table表格多列排序

antd中的sort支持排序,但是只能单列排序,原本想把sort的单列改成多列,不会改【哭】,
后来通过改变columns中的title达到了效果
this.state = {
//这里先定义一个和columns对应的数组
sortColumns:[{
columnKey:"",//这里写的是columns里面对应的dataindex
order:""
}],
sortArr:[]//这是对排序的列的排序
}
const columns = [{
title:this.handleClick(这里传对应的dataindex)}>
{name}sortArr.indexOf(当前dataIndex)>0?sortArr.indexOf(当前dataIndex)+1:""
sortColumns[i].order == "desc"?"down":"")} />

}]
const handleClick = (index)=>{
let { sortArr,sortColumns } = this.state;
//升降序的时候
sortArr.push(index);
//sortColumns中对应的order修改
let exist = sortColumns.find(item=>item.columnKey == index);
if(exist){
exist.order = exist.order == "asc"?"desc":(exist.order == "desc"?"":"asc")
}
//还原情况,需要判断sortArr中是否有对应的dataindex,去掉该dataindex,sortColumns中的order也做相对于的修改
}
此方法是前端传递参数由后台排序返回。

你可能感兴趣的:(react项目中遇到的坑)