2017-09-28 3 views
0

Ich habe ein sehr frustrierendes Problem. Ich habe meine Variable in Konstruktor wie folgt aus:Zugriff auf die im Klassenkonstruktor festgelegte Variable

export class ChannelTransition{ 
    constructor(props) { 
     this.transitionHandler=props; 
    } 

    channelTransitionSetup(channelsList) { 
     console.log(this.transitionHandler.handleHeaderTransition);    
    } 
} 

Und jetzt, wenn ich versuche, dass die Variable auf Zugriff auf Konstruktor ich nicht definiert erhalten. Ich weiß, dass es etwas mit dem Scope zu tun hat, aber wie kann ich dann auf meine Variable im Konstruktor zugreifen?

+2

Stellen Sie sicher, dass Ihr 'transitionHandler' eine Eigenschaft namens' handleHeaderTransition' hat? Ansonsten ist das korrekt. – Thusitha

+1

Und wo und wie channelTransitionSetup aufgerufen wird? – estus

+0

Hat 'reps' eine Eigenschaft mit dem Namen' handleHeaderTransition'? Hast du den Code debuggt? Welche Werte haben Sie nach dem Setzen des Konstruktors für transitionHandler erhalten? Welche Werte erhalten Sie in 'channelTransitionSetup' für' transitionHandler' vor dem Aufruf von 'this.transitionHandler.handleHeaderTransition'? –

Antwort

1

Dies funktioniert für mich:

class ChannelTransition{ 
     constructor(props) { 
      this.transitionHandler=props; 
     } 
     channelTransitionSetup(channelsList) { 
      console.log(this.transitionHandler.handleHeaderTransition); 

     } 

    } 


    let test = new ChannelTransition({handleHeaderTransition:'Ok!'}); 

    test.channelTransitionSetup(); 
/* This print 'Ok!' in console */ 

Also ich weiß nicht, was dein Problem ist. Kannst du erklären, wie du es benutzt?

+0

Danke für die Beantwortung: Hier ist, wie ich es nenne: lass channelTransition = new ChannelTransition (this.props.handleHeaderTransition); channelTransition.changeChannelOnScroll (KanalNamen); und dann in changeChannOnScroll habe ich this.channelTransitionSetup (channelsList); –

+0

Auch ich habe nur den obigen Code vereinfacht, und es gibt einen Grund, dass ich das channelTransitionSetup nicht direkt verwende –

+0

Ich denke, dass ich das Problem gefunden habe. Ihr Beispiel hat mir sehr geholfen. Also ging ich in der Objekthierarchie eine Ebene zu weit nach unten. Stattdessen, wenn ich es so nenne, funktioniert es: this.transitionHandler() anstelle von this.transitionHandler.handleHeaderTransition(). Danke für die Hilfe –

Verwandte Themen