2017-12-05 1 views
0

Ich versuche, Requisiten in einem Event-Handler zu verwenden. Dies ist ein Teil meines CodesVerwenden Sie Requisiten in Event-Handler

class Dashboard extends Component { 
    componentDidMount() { 
    var grid = new Muuri('.grid', { 
     //options... 
    }); 
    grid.on('move', (data) => { 
     console.log('ok') 
     //can't use this.props here 
    ); 
    } 
    render() {...} 
    constructor() {...} 
} 

Das Problem ist, ich bin nicht in der Lage this.props in dem ‚move‘ Handler zugreifen.

+0

Sie müssen wahrscheinlich 'this' binden, wo immer Sie die Funktion aufrufen. –

+0

Sogar mit einer .bind (this) nach meiner Pfeil-Funktion gibt mir die console.log (und) undefined zurück – Phobie

+0

Sie benutzen die Pfeil-Funktion, also sollte 'this' sich auf' this' beziehen wie in 'componentDidMount'. Können Sie ein ausführbares Beispiel für Ihr Problem bereitstellen? – iofjuupasli

Antwort

2

Sie können die Referenz für this.props speichern und im Event-Handler ablegen.

Oder Greifen Sie mit Destruktoren auf die erforderlichen einzelnen Eigenschaften zu und greifen Sie dann auf diese Eigenschaften im Ereignishandler zu.

class Dashboard extends Component { 
    componentDidMount() { 

     const {prop1name, prop2Name} = this.props; 

     //OR 

     const thisProps = this.props; 




     var grid = new Muuri('.grid', { 
      //options... 
     }); 
     grid.on('move', (data) => { 
      console.log('ok') 
      //access `this.props` using `thisProps` or access individual properties. 
      )} 
     render() {} 
     constructor() {} 
    } 
+1

Ich stimme der ersten vorgeschlagenen Lösung zur Destrukturierung des Props-Objekts vor der Definition des Grid-Ereignisses zu. –

+0

Wenn ich das tue, kann ich Daten in ein Array in this.props schieben? – Phobie

+0

@Phobie 'this.props' ist readonly.You kann und sollte dies nicht tun.Stellen Sie statt State Lifting –