2017-06-25 1 views
0

j'ai deux matrices (un dans un état et l'autre est un accessoire) et les deux ont clé: paires de valeurson compare l'état et la valeur prop - erreur: ne peut pas lire la propriété « état » de undefined

si i utilisation:

this.props.test.col.forEach(function(element){ 
    console.log(element.header); 
} 

Je verrai une liste de toutes les valeurs d'en-tête dans le tableau de paires clé: valeur dans mon prop

Si j'utilise:

console.log(this.state.gridOptions.api.blahhhh.hasOwnProperty('example header'); 

il retournera vrai si la clé de l'une des paire clé: valeur dans mon état est 'exemple d'en-tête'

Les deux fonctionnent comme prévu. Je veux comparer l'état et la clé de prop: paires de valeurs et effectuer une action chaque fois que la clé dans la paire clé: valeur de mon état correspond à la valeur de la clé: paire de valeur de mon prop.

Alors pourquoi ce qui suit ne fonctionne pas? Tout ce que je ne faisais que combiner les deux

this.props.test.col.forEach(function(element){ 
    if (this.state.gridOptions.api.blahhhh.hasOwnProperty(element.header)){ 
    console.log('hi'); 
    } 
} 

Je reçois l'erreur:

Uncaught TypeError: Cannot read property 'state' of undefined 

Dans le code exemple ci-dessus, s'il y a une correspondance entre la valeur et la clé de l'état et le pilier, puis impression 'salut' à la console

+1

Utilisez la fonction de flèche pour préserver le contexte lexical: 'this.props.test.col.forEach (élément => ...)' – haim770

Répondre

1

en utilisant 'ceci' à l'intérieur du forEach-callback aura un autre contexte.

essayons:

let self=this; 
this.props.test.col.forEach(function(element){ 
    if (self.state.gridOptions.api.blahhhh.hasOwnProperty(element.header)){ 
    console.log('hi'); 
    } 
} 
+0

a travaillé ooo! Y a-t-il des termes de recherche que vous pouvez recommander pour que je puisse lire ce que vous venez de publier? Contexte de tableau Javascript? – user3120554

+0

Ceci est un message agréable qui peut aider à comprendre [http://ryanmorr.com/understanding-scope-and-context-in-javascript/](http://ryanmorr.com/understanding-scope-and-context- in-javascript /) ou essayez [https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/this](https://developer.mozilla.org/de/docs/Web/JavaScript/Référence/Opérateurs/this) –