2017-07-29 1 views
2

Dans ReactNative, j'ai une propriété transmise ou non à un objet de classe. Existe-t-il un moyen similaire à Java de vérifier si la propriété est nulle ou non?Comment vérifier si une propriété est présente dans ReactNative?

Dans mon cas, j'ai this.props.overrideAccessibilityLabel qui pourrait être transmis ou non. Je veux seulement l'utiliser quand il est transmis:

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

Avez-vous du code? Une instance spécifique que cela est utile? Sinon, il s'agit d'un doublon de [how-do-i-check-if-a-object-has-a-property-in-javascript] (https://stackoverflow.com/questions/135448/how-do-i -check-if-a-object-has-a-propriété-en-javascript) – Skam

Répondre

3

En ReactNative, lorsqu'une propriété est pas présent, il est évalué à false. (Une chaîne vide est également évaluée à false.) L'utilisation de "if" pour vérifier si une propriété est présente est la bonne façon de procéder.

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) 

La sortie est:

ra=true; rb=false; rc=false 

Ainsi, une propriété est traitée différemment d'un var. La vérification d'une propriété vide aboutit à false, ce qui signifie qu'une référence à un var indéfini provoque une exception.

4

Mais alors une instruction "if" d'un seul interlocuteur fonctionne le mieux dans ce cas.

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