从对象数组访问数据时反应中的类型错误

时间:2020-08-26 02:49:04

标签: reactjs

我正在尝试从regressions_test_summary访问分辨率时间戳变量,但是却收到类型错误,提示无法读取未定义的“ resolution_map”属性。

enter image description here

变量,我正在尝试访问: enter image description here

函数代码:

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'}`} 
    />
  }
}

regressiontestData:

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)
  } 

1 个答案:

答案 0 :(得分:1)

我可以看到摘要是一个数组。您无法访问像这样的数组元素的属性。

获得摘要时,请尝试以下操作:

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)'}} />
)}

这将返回您想要的图标的新数组。