2017-07-11 10 views
4

J'ai une fonction qui est lié à un composant React:Comment utiliser le mot clé 'this' dans une signature de fonction pour définir un paramètre par défaut?

functionName(param1, param2 = this.state.field) { 

    } 

Je ne l'ai jamais entendu parler du mot-clé « ce » étant utilisé dans une signature de fonction en Javascript et je me demande si le contexte de « ceci » sera l'objet conteneur ou l'étendue globale. Cette fonction doit-elle être liée au contexte approprié avant que je puisse utiliser 'ceci' correctement dans la signature?

+0

Qu'essayez-vous de lier le contexte 'this'? Le composant? La fonction? L'objet global? – mhodges

+0

Rien. J'essaie simplement de déterminer si le contexte de ceci dans la signature de la fonction sera le contexte de l'objet contenant (le composant de réaction auquel la fonction elle-même est liée) –

Répondre

2

Je me demande si le contexte de 'this' sera l'objet conteneur ou la portée globale.

Aucune. Les valeurs par défaut ne sont pas évaluées en dehors de la fonction, mais inside the call. Le mot-clé this pointe vers la même valeur que dans le corps de la méthode - le destinataire de l'appel. Donc, si la fonction était liée à votre composant de réaction, c'est ce que sera this.

+0

Ah c'est logique! Je ne savais pas que la valeur par défaut était définie dans le corps de la fonction. Merci pour la connaissance. Donc je devine si la fonction n'est liée à rien alors le contexte de ce sera l'objet contenant ... sauf si la fonction est une fonction non liée imbriquée –

1

Si la fonction se trouve dans une classe qui étend la classe React.Component de la bibliothèque de réaction. Le mot clé "this" fait référence à l'objet courant dans le contexte de sa classe. Par exemple:

import React from 'react'; 
class example extends React.Component { 
    this.state = { 
     field: "this variable!" 
    } 
    functionName(param1, param2 = this.state.field) { 
     console.log(param2); 
    } 
} 

Comme vous observez, this.state est une propriété de classe par exemple simplement être appelé au second argument, qui renvoie la valeur de la propriété sur le terrain de this.state objet.

Si vous vous demandez si c'est faisable ou non. Eh bien, JavaScript est un langage multi-paradigme, et si l'intention de l'utiliser dans un paradigme fonctionnel, cela peut certainement être acceptable.

+1

Je ne suis pas sûr si je suis d'accord avec l'utilisation du ' ce mot clé étant considéré comme fonctionnel. –