在写需求的时候,有一个向上或向下的按钮,数组需要相应的进行换位,但是这两个按钮逻辑类似,但是又有点小差异。如果各写一遍又没必要,记录
<Tooltip title="向上移动">
<Button type="primary" icon="arrow-up" onClick={() => detailMove(event, record)} data-id="button1"/>
/*
*参数一是 event事件
*参数二是传入到数组中的单元格信息(获取单元格的ID)
*/
const detailMove = (event, params) => {
let dictIdList = []
let index = null
dictIdList = meaningDetail.map((item) => item.id
) //获取数组
dictIdList.forEach((item, i) => { //找到数组中需要执行的索引
if (item == params.id) {
index = i
}
})
if (event.target.dataset.id == "button1") {
dictIdList = meaingUpGo(dictIdList, index)
delOrUpdateForDictionary({ dictIdList, 'groupId': activeRecord.id }) //调接口
queryDetail()
} else {
dictIdList = meaingDownGo(dictIdList, index)
delOrUpdateForDictionary({ dictIdList, 'groupId': activeRecord.id })
queryDetail()
}
}
/*
*数组内部向上或向下换位
*参数一是需要排序的数组
*参数二是数组所在的索引
*/
function meaingUpGo(fieldData, index) {
if (index != 0) {
fieldData[index] = fieldData.splice(index - 1, 1, fieldData[index])[0];
return fieldData
} else {
return fieldData
}
}
function meaingDownGo(fieldData, index) {
if (index != fieldData.length - 1) {
fieldData[index] = fieldData.splice(index + 1, 1, fieldData[index])[0];
return fieldData
} else {
return
}
}
一下自己的方法。