Reactjs 从对象数组访问数据时,在react中键入错误
我正试图从regressions_test_summary中访问resolution timestamp变量,但是我收到一个类型错误,表示无法读取未定义的“resolution_map”属性 我试图访问的变量: 来自函数的代码:Reactjs 从对象数组访问数据时,在react中键入错误,reactjs,Reactjs,我正试图从regressions_test_summary中访问resolution timestamp变量,但是我收到一个类型错误,表示无法读取未定义的“resolution_map”属性 我试图访问的变量: 来自函数的代码: export const getRegressionTestStatus = summary => { if(summary.regression_test_summary.resolution_timestamp === null) return 'Un
export const getRegressionTestStatus = summary => {
if(summary.regression_test_summary.resolution_timestamp === null) return 'Unresolved'
else if(summary.unit_test_fails || summary.unit_test_errors) return 'Failed'
else if(!summary.unit_test_fails && !summary.unit_test_errors) return 'Success'
console.log('from summary', summary);
}
export const getLogIcon = (unitTest, size) => {
if(unitTest.result && typeof(unitTest.result[0]) === 'string') {
return <ErrorIcon className={`LogIcon${size} TestError`} />
}
else {
return <FiberManualRecordIcon
className={`LogIcon${size} ${!unitTest.result ? 'TestNA' : unitTest.result[0] ? 'TestPass' : 'TestFail'}`}
/>
}
}
导出常量getRegressionTestStatus=摘要=>{
if(summary.regression\u test\u summary.resolution\u timestamp==null)返回“未解析”
else if(summary.unit_test_失败| | summary.unit_test_错误)返回“失败”
否则,如果(!summary.unit\u test\u失败&&!summary.unit\u test\u错误)返回“Success”
console.log('from summary',summary);
}
导出常量getLogIcon=(单元测试,大小)=>{
if(unitTest.result&&typeof(unitTest.result[0])=='string'){
返回
}
否则{
返回
}
}
回归测试数据:
const getIcon = (summary) => {
const status = getRegressionTestStatus(summary)
if(status === 'Unresolved') return <ScheduleIcon style={{color: 'var(--update-bg-color)'}} />
else if(status === 'Failed') return <CloseIcon style={{color: 'var(--reject-fg-color)'}} />
else if(status === 'Success') return <CheckIcon style={{color: 'var(--approve-bg-color)'}} />
console.log('summary', summary);
}
useEffect(() => {
async function onLoadRegressionTests() {
loading.setLoading(true)
const results = await verifiedGet(`get_regression_tests/${(currentPage - 1) * resPerPage}/${resPerPage}`, user.user)
if(results.status === 0) {
setRegressionTestsData(results.data)
setPageNumbers(getPageNumbersList(results.total_count, resPerPage))
} else if(results.status >=20 && results.status <=30) {
snackbar.statusCheck(results)
user.setSessionTokenMatches(false)
} else snackbar.statusCheck(results)
loading.setLoading(false)
}
if(user.f_auth([1, 20])) onLoadRegressionTests()
else setRegressionTestsData('You do not have the authority to view this page.')
}, [currentPage])
const onRegressionTestClick = (id) => props.history.push(`test?id=${id}`)
const onRequestRegressionTestClick = () => props.history.push('/requesttest')
const onPageNumberClick = (pageNum) => {
setCurrentPage(pageNum)
}
const getIcon=(摘要)=>{
const status=getRegressionTestStatus(摘要)
如果(状态==‘未解决’)返回
else if(状态=='Failed')返回
如果(状态=='Success')返回,则返回
console.log('summary',summary);
}
useffect(()=>{
异步函数onLoadRegressionTests(){
加载。设置加载(true)
const results=wait-verifiedGet(`get\u-regression\u-tests/${(currentPage-1)*resPerPage}/${resPerPage}`,user.user)
如果(results.status==0){
setRegressionTestsData(results.data)
setPageNumber(getPageNumbersList(results.total_count,resPerPage))
}else if(results.status>=20&&results.status props.history.push(`test?id=${id}`)
const onRequestRegressionTestClick=()=>props.history.push(“/requesttest”)
const onPageNumberClick=(pageNum)=>{
setCurrentPage(pageNum)
}
我可以看到摘要是一个数组。您不能像这样访问数组元素的属性
获得摘要后,请尝试以下操作:
const getIcon = summary.data.map((item) => {
const status = getRegressionTestStatus(item)
if(status === 'Unresolved') return <ScheduleIcon style={{color: 'var(--update-bg-color)'}} />
else if(status === 'Failed') return <CloseIcon style={{color: 'var(--reject-fg-color)'}} />
else if(status === 'Success') return <CheckIcon style={{color: 'var(--approve-bg-color)'}} />
)}
const getIcon=summary.data.map((项)=>{
const status=getRegressionTestStatus(项目)
如果(状态==‘未解决’)返回
else if(状态=='Failed')返回
如果(状态=='Success')返回,则返回
)}
这将返回所需的新图标数组。如何调用
GetRegressionTestStatus
?它可能是在对象或其属性完全填充之前的渲染周期产生的。请尝试在之前添加一些检查,例如摘要和摘要&summary.regression\u test\u summary&!summary.regression\u test\u summary.resolution\u timestamp
您可以添加代码吗?更新了代码@hgb123