2017-07-29 76 views
2

在ReactNative中,我有一个可能传递或不传递给类对象的属性。有没有像Java中的方式来检查以查看该属性是否为空?如何检查ReactNative中是否存在属性?

在我的情况下,我有this.props.overrideAccessibilityLabel可能会传递或不传递。我只想在传递时使用它:

render() { 
    return (
     <View 
     accessibilityLabel={this.props.currMessage.text} 
     if {...props.myAccessibilityLabel} { 
      ...accessibilityLabel={...props.myAccessibilityLabel} 
     } 
     > 
     <Text1 
      // ... 
     > 
     </Text1> 
     </View> 
    ); 
    } 
+0

你有任何的代码?这是有用的特定实例?否则,这是[如何做 - 我检查,如果一个对象具有一个属性在JavaScript](https://stackoverflow.com/questions/135448/how-do-i -check-IF-AN-对象具有-A-财产中的JavaScript) – Skam

回答

3

在ReactNative中,当属性不存在时,它的计算结果为false。 (空字符串也被评估为false。)因此,使用“if”来检查属性是否存在是正确的方法。

function myFunc(x) { 
    if (x) { 
     return true; 
    } else { 
     return false; 
    } 
} 
var a1 = {} 
a1.a = "abc" 
a1.b = "" 
var ra=myFunc(a1.a) 
var rb=myFunc(a1.b) 
var rc=myFunc(a1.b) 
console.log("ra=" + ra + "; rb=" + rb + "; rc=" + rc) 

输出是:

ra=true; rb=false; rc=false 

所以财产从VAR区别对待。检查一个空属性只会导致false,因此引用一个未定义的var会导致异常。

4

但是在这种情况下,一行一行的“if”声明是最好的。

 <View 
     accessibilityLabel={this.props.currMessage.text ? 
this.props.currMessage.text : this. props.myAccessibilityLabel} 
     > 
     <Text1 
      // ... 
     > 
     </Text1> 
     </View> 
相关问题