前端 js this.dataSource = res.data.data.items || [];

本文介绍了一种前端处理后端API返回数据中可能存在的null值的方法,通过使用条件运算符来避免逻辑错误。当`res.data.data.items`为null时,用空数组`[]`替代,确保数据源`this.dataSource`始终有一个安全的初始值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端有时候获取后端返回值res的数据,但是不知道这个数据是否有值,这个时候一般处理是这样:
this.dataSource = res.data.data.items || [];
防止后端出现null值导致逻辑错误

意思是 res.data.data.items如果是null的话 就取[],
如果不是null 就取自身的值

// 数据 const getTotalBeforeData = function () { axiosPost("/user/total/SearchByDateAndName", param, t).then((res) => { // 表头名 const s1 = res.data.data.tableName.map((header: any, index: any) => ({ title: header, dataIndex: header, key: header, fixed: index < 4 ? "left" : undefined, // 固定前6列 width: index === 0 ? 50 : index === 2 ? 200 : 90, onHeaderCell: () => ({ style: { backgroundColor: '#769fcd' } }) }) ) s1[0].title = "no" s1[3].title = "実績工数" setColumns(s1) // 表内容 for (let index = 0; index < res.data.data.tableData.length; index++) { res.data.data.tableData[index].id = index + 1 } setDataSource(res.data.data.tableData) // 合计 const length = s1.length let s2: any = [] var totalKeys = Object.keys(res.data.data.statistics) var totalValues = Object.values(res.data.data.statistics) for (let index = 3; index < s1.length; index++) { for (let i = 0; i < totalKeys.length; i++) { const totalKey = totalKeys[i]; const totalValue = totalValues[i]; if (totalKey == s1[index].key) { s2.push(totalValue); } } } setItems(s2) }); }<Spin spinning={loading} > <Table<DataType> columns={columns} dataSource={dataSource} rowClassName={(record, index) => (index % 2 === 1 ? "even" : "odd")} scroll={{ x: "max-content", y: "calc(100vh - 350px)" }} // 设置表格滚动高度 pagination={false} bordered summary={() => ( <Table.Summary fixed> <Table.Summary.Row> <Table.Summary.Cell index={0} colSpan={3}> 合计 </Table.Summary.Cell> {items.map((item, index) => ( <Table.Summary.Cell index={index + 3}>{item} </Table.Summary.Cell> ))} </Table.Summary.Row> </Table.Summary> )} /> </Spin>我想将第五列小于0的单元格变成红色
最新发布
04-04
const getTotalBeforeData = function () { axiosPost(“/user/total/SearchByDateAndName”, param, t).then((res) => { // 表头名 const s1 = res.data.data.tableName.map((header: any, index: any) => ({ title: header, dataIndex: header, key: header, fixed: index < 4 ? “left” : undefined, // 固定前6列 minWidth: index === 0 ? 50 : index === 2 ? 200 : 90, // 设置列宽 maxWidth: index === 0 ? 50 : index === 2 ? 200 : 90, onHeaderCell: () => ({ style: { backgroundColor: '#769fcd' } }) }) ) s1[0].title = "no" s1[3].title = "计划工时" s1[4].title = "实际工时" s1[5].title = "差异" setColumns(s1) // 表内容 for (let index = 0; index < res.data.data.tableData.length; index++) { res.data.data.tableData[index].id = index + 1 } setDataSource(res.data.data.tableData) // 合计 const length = s1.length let s2: any = [] var totalKeys = Object.keys(res.data.data.statistics) var totalValues = Object.values(res.data.data.statistics) for (let index = 3; index < s1.length; index++) { for (let i = 0; i < totalKeys.length; i++) { const totalKey = totalKeys[i]; const totalValue = totalValues[i]; if (totalKey == s1[index].key) { s2.push(totalValue); } } } setItems(s2) }); }<Spin spinning={loading} > <Table<DataType> columns={columns} dataSource={dataSource} rowClassName={(record, index) => (index % 2 === 1 ? “even” : “odd”)} scroll={{ x: “max-content”, y: “calc(100vh - 350px)” }} // 设置表格滚动高度 pagination={false} bordered summary={() => ( <Table.Summary fixed> <Table.Summary.Row> <Table.Summary.Cell index={0} colSpan={3}> 合计 </Table.Summary.Cell> {items.map((item, index) => ( <Table.Summary.Cell index={index + 3}>{item} </Table.Summary.Cell> ))} </Table.Summary.Row> </Table.Summary> )} /> </Spin>虽然固定了列宽,但是我可以做列筛选,当宽度之和小的时候就会按百分比变宽,怎么解决
04-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值