Reactjs 从对象数组访问数据时,在react中键入错误

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

我正试图从regressions_test_summary中访问resolution timestamp变量,但是我收到一个类型错误,表示无法读取未定义的“resolution_map”属性

我试图访问的变量:

来自函数的代码:

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