JSX如何将对象值添加到可能为null或未定义的String中?

时间:2017-05-17 04:04:42

标签: reactjs react-native jsx

这是我的确切代码:

   <Text style={styles.priceText} numberOfLines={2}>
          {'$ '+item.right.detail ? item.right.detail.price: ''}{'\n'}{'\n'}
   </Text>

因此,有时可能item.right.detail为null或未定义。此检查无效。我得到一个错误undefined不是一个对象(评估item.right.detail)

我需要一种能够从对象元素构造数据字符串的方法,其中一些子对象或值可以为null。显然我想这样做而不会崩溃!

我是否必须做一些疯狂的事情:

  private getPrice(item){
      var retVal = '$';
      if (typeof item !== 'undefined' ) && (item)) {
         if (typeof item.right !== 'undefined' ) && (item.right)) {
          if (typeof item.right.detail !== 'undefined' ) &&  (item.right.detail)) {

           if (typeof item.right.detail.price !== 'undefined' ) && (item.right.detail.price)) {
              retVal = retVal+item.right.detail.price;
          }  
       }    
    }
 }
 return retVal;
}

2 个答案:

答案 0 :(得分:0)

尝试使用!!运营商。对于空值,!!返回false,因此,您的代码可能是这样的:

<Text style={styles.priceText} numberOfLines={2}>
      {'$ '+ (!item || !item.right || !item.right.detail || !item.right.detail.price) ? '' : item.right.detail.price}{'\n'}{'\n'}
</Text>

答案 1 :(得分:0)

我认为问题最好通过lodash库来解决。

https://lodash.com/docs#get _.get(object,path,[defaultValue])

获取object对象的值。如果未定义已解析的值,则返回defaultValue。

_。get(item,“item.right.detail.price”,“Not available”)//这应该有用。