简体   繁体   English

JSX map函数内部的错误处理

[英]Error handling inside JSX map function

I have a map function that is iterating through an array and populating a table like this: 我有一个map函数,它遍历一个数组并填充一个像这样的表:

var programData = this.state.data.map(program => (
  <tr >

    <td >
      {program.scheduledStartDateTime}
    </td>
    <td>
      {program.searchableTitles[1].value.en}
    </td>
  </tr>
));

However, sometimes the second field: program.searchableTitles[1].value.en is empty thus resulting in the error: TypeError: Cannot read property 'value' of undefined 但是,有时第二个字段: program.searchableTitles[1].value.en为空,从而导致错误: TypeError: Cannot read property 'value' of undefined

How can I handle this exception? 如何处理此异常? I've tried adding Try and Catch but I can't seem to find a way to make it work within JSX code. 我尝试添加Try and Catch,但似乎找不到找到使其在JSX代码中工作的方法。

I don't mind what goes into the field where there is no data present, it can be left empty. 我不在乎什么没有数据存在的领域,可以将其留空。

Try this way 试试这个

var programData = this.state.data.map(program => (
  <tr>
    <td>
      {program.scheduledStartDateTime}
    </td>
    <td>
      {program.searchableTitles && program.searchableTitles[1] && program.searchableTitles[1].value.en}
    </td>
  </tr>
));

If you are getting the data through an API call then the data might not be immediately available or if you the state is not set immediately. 如果要通过API调用获取数据,则数据可能不会立即可用,或者状态没有立即设置。

You can display different view instead 您可以改为显示其他视图

var programData = this.state.data.map(program => (
  <tr >

    <td >
      {program.scheduledStartDateTime}
    </td>
    <td>
{program.searchableTitles[1] ? 
     program.searchableTitles[1].value.en : <p> Not available </p> }
    </td>
  </tr>
));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM