复杂交互设计:上移、下移、置顶、置底、移除
目前有个需求如下:

这是一个form表单,复杂的地方在于需要前端维护内容数据的上移,下移,置顶、置底、移除
目前,拿到这个需求,接口文档,什么东西都没有,前端如何做设计?
设计文档目录如下:

设计思路

数据模型操作demo
思路:前端维护一个实例对象,操作这个对象。数据结构如下,
<TS>{
name:
group:
list:list[{id,type,content……}]
]
注意,用cloneDeep
数组操作参考之前写的文章:
https://www.cnblogs.com/youqiancheng/p/11947252.html
https://juejin.cn/post/6871036986900086792
demo如下:
let list = [{id:1},{id:2},{id:3},{id:4},{id:5}];
console.log(list,"origin") // 1,2,3,4,5
let temp = null
//上移 2->1 结果:2,1,3,4,5
let { id } = list[1]
let index = list.findIndex(ele => ele.id === id); //获取点击当前item的id的index
temp = { ...list[index - 1] };
list[index - 1] = { ...list[index] }; //换位置
list[index] = temp;
console.log(list,"2->1,上移")
//下移 1->3 结果:2,3,1,4,5
id = list[1].id
index = list.findIndex(ele => ele.id === id); //获取点击当前item的id的index
temp = { ...list[index + 1] };
list[index + 1] = { ...list[index] }; //换位置
list[index] = temp;
console.log(list,"1->3,下移")
//删除 id=2 结果:3,1,4,5
id = list[0].id
index = list.findIndex(ele => ele.id === id); //获取点击当前item的id的index
list.splice(index, 1);
console.log(list,"删除第一个")
//splice 插入
//写法
//array.splice(index,0,data1,data2,....);
//参数
//index:数组中需要插入数据的起始位置;
//0:删除的个数为0;
//data1,data2:需要插入的元素,用逗号隔开
//置顶id:4. 结果:4,3,1,5
index = 2
temp = list[index];
list.splice(index, 1);
list.splice(0,0,temp); //删除操作的那个,然后将删除的item放在数组首位
console.log(list,"4置顶")
//置底 id:3 结果:4,1,5,3
index = 1
temp = list[index];
len = list.length //数组长度
list.splice(index, 1);
list.splice(len-1,0,temp); //删除操作的那个,然后将删除的item放在数组末尾
console.log(list,"3置底")

打印完整结果如下:
> Array [Object { id: 1 }, Object { id: 2 }, Object { id: 3 }, Object { id: 4 }, Object { id: 5 }] "origin"
> Array [Object { id: 2 }, Object { id: 1 }, Object { id: 3 }, Object { id: 4 }, Object { id: 5 }] "2->1,上移"
> Array [Object { id: 2 }, Object { id: 3 }, Object { id: 1 }, Object { id: 4 }, Object { id: 5 }] "1->3,下移"
> Array [Object { id: 3 }, Object { id: 1 }, Object { id: 4 }, Object { id: 5 }] "删除第一个"
> Array [Object { id: 4 }, Object { id: 3 }, Object { id: 1 }, Object { id: 5 }] "4置顶"
> Array [Object { id: 4 }, Object { id: 1 }, Object { id: 5 }, Object { id: 3 }] "3置底"
以上只是设计文档一部分,上移、下移、置顶、置底、移除很多业务中会有类似的,分享出来,方便以后使用。
设计参考之前写的文章:前端项目整体设计模版
信息创造价值, 知识就是力量。

浙公网安备 33010602011771号