操作数据
1,对象转数组形式:
原数据:
目标数据:
// const dataSource = [
// { productKey: 1, name: 'a' },
// { productKey: 2, name: 'b' },
// ];
const dataSource = valueList && Object.keys(valueList).map((pk) => ({
productKey: pk,
...valueList[pk],
}));
对此进行反转,
const newDataSource = payload.newRequest.reduce((pre, next) => {
const pk = next.productKey;
delete next.productKey;
pre[pk] = next;
return pre;
}, {});
2,在原数组里面新增数组数据:
新的数据是value.tabList
原来的数据是cateItemList里面,
新的数据重新setState到老的数据里面
使用:[……原来的数据,value.tabList]
this.setState({
cateItemList: [...cateItemList, value.tabList],
});
3,
我这里转后怎么在把cateItemList,放入MiniInfo里面
使用
{...MiniInfo, cateItemList}
前端操作数据,置顶,上移,下移,删除,
置顶:
RoofTop = (record, index) => {
const { cateItemList } = this.state;
// const dataSourceProduct = cateItemList && cateItemList.map((item, i) => ({
// ...item,
// key: i,
// id: i + 1,
// }));
if (index === 0) {
message.warning('已经是顶部');
} else {
cateItemList.unshift(cateItemList.splice(index, 1)[0]);
}
this.setState({
cateItemList,
});
}
上移:
MoveUpword = (record, index) => {
const { cateItemList } = this.state;
// const dataSourceProduct = cateItemList && cateItemList.map((item, i) => ({
// ...item,
// key: i,
// }));
if (index !== 0) {
cateItemList[index] =
cateItemList.splice(index - 1, 1, cateItemList[index])[0];
} else {
cateItemList.push(cateItemList.shift());
}
this.setState({
cateItemList,
});
}
下移:
MoveDown = (record, index) => {
const { cateItemList } = this.state;
// const dataSourceProduct = cateItemList && cateItemList.map((item, i) => ({
// ...item,
// key: i,
// }));
if (index !== cateItemList.length - 1) {
cateItemList[index] =
cateItemList.splice(index + 1, 1, cateItemList[index])[0];
} else {
cateItemList.unshift(cateItemList.splice(index, 1)[0]);
}
this.setState({
cateItemList,
});
}
删除:
delTab = (record, index) => {
const { cateItemList } = this.state;
// const dataSourceProduct = cateItemList && cateItemList.map((item, i) => ({
// ...item,
// key: i,
// id: i + 1,
// }));
const itemlist = cateItemList.splice(index, 1)[0];
console.log(itemlist, cateItemList, 'item');
this.setState({
cateItemList,
});
}
前端搜索:
onSearch=(value) => {
console.log(value, 'value');
const { result } = this.state;
const { devicetypeall } = this.props;
const arr = [];
this.setState({
keys: 0,
});
if (value) {
devicetypeall.map(item => {
// if (v.devTypeCn.includes(value.key)) {
// arr.push(v);
// console.log(v, 'aaaaaaaa');
// }
if (item.childrenDevType) {
const childrenDevType = [];
item.childrenDevType.map(items => {
if (items.devTypeCn.includes(value)) {
const obj = {};
childrenDevType.push(items);
const has = arr.filter(i => i.devTypeCn === item.devTypeCn);
if (has.length < 1) {
obj.devTypeCn = item.devTypeCn;
obj.devTypeEn = item.devTypeEn;
obj.id = item.id;
obj.childrenDevType = childrenDevType;
arr.push(obj);
}
}
});
}
});
this.setState({
result: arr,
});
} else {
this.setState({
result: devicetypeall,
});
}
}
新加的一个banner管理,在原数据里面添加bannerlist
回调的时候:
相关推荐
《ArcGIS基础100例(操作手册+操作数据)汤国安》是一份全面介绍ArcGIS基础应用的资源包,适合初学者和有一定基础的GIS(地理信息系统)用户。该资源由知名专家汤国安教授编写,旨在通过100个实际操作案例,帮助读者...
在ASP.NET 2.0中操作数据:为GridView控件添加Checkboxes列(源码)
在ASP.NET 2.0中操作数据:格式化DataList和Repeater的数据
在ASP.NET 2.0中操作数据:定制数据修改界面
在ASP.NET 2.0中操作数据:在程序启动阶段缓存数据
在ASP.NET 2.0中操作数据:格式化DataList和Repeater的数据(源码)
在ASP.NET 2.0中操作数据:分页和排序报表数据
excel 宏链接数据库并进行操作数据处理
在ASP.NET 2.0中操作数据:基于数据的自定义格式化
在ASP.NET 2.0中操作数据:给新增、编辑界面增加验证控件
在ASP.NET 2.0中操作数据:用DataList和Repeater来显示数据
在ASP.NET 2.0中操作数据:大数据量时提高分页的效率
在ASP.NET 2.0中操作数据:编辑和删除现有的二进制数据
在ASP.NET 2.0中操作数据:在Data Web控件显示二进制数据
在ASP.NET 2.0中操作数据:DataList和Repeater数据排序(三)
线程操作数据查询,防止窗口卡死。 点击窗口按钮启动线程查询数据库。线程执行后返回查询数据。
在ASP.NET 2.0中操作数据:基于用户对修改数据进行限制(源码)
在ASP.NET 2.0中操作数据:编辑和删除现有的二进制数据(源码)
在ASP.NET 2.0中操作数据:对数据访问层进行“连接—命令”级的设置
在ASP.NET 2.0中操作数据:上传文件(源码)