2016-02-27 19 views
15

ho la classe seguenti ReactJS:chiamata una funzione statica nella classe Reagire ES6

import React from 'react' 

export class Content extends React.Component { 

    static getValue(key) { 
    return key 
    } 

    render() { 
    let value = this.getValue(this.props.valueKey); 
    return <span dangerouslySetInnerHTML={{__html: value}} /> 
    } 
} 

Ma ho il seguente errore:

TypeError: this.getValue is not a function 

Non capisco. È questo il modo migliore per chiamare una funzione statica? Penso che reagire stia facendo qualcosa con la statica, ma non so cosa.

+0

* "è il modo migliore per chiamare una funzione statica?" * Poiché non funziona, probabilmente no: P –

risposta

23

È necessario accedere a un metodo statico sulla classe e non su un'istanza. Quindi nel tuo caso, utilizzare:

Content.getValue()

Tuttavia, un metodo statico non sarà in grado di accedere a this - non credo che si desidera che il metodo sia statica in base al codice di esempio sopra.

Più: Static Members in ES6

+0

La funzione 'getValue' è di per sé statica, quindi può essere chiamata con this.constructor.getValue (params) ... Io uso questo metodo spesso nel mio codice. Non vedo un motivo per cui questa funzione non sia statica, a meno che "questo" non debba essere chiamato all'interno della funzione. – Sprose

7

È possibile accedere all'interno della classe come this.constructor.getValue.

Modifica: Ho aggiunto un JSFiddle here. L'unica modifica che ho apportato è stata l'aggiunta della chiamata di funzione dal costruttore e la rimozione del innerHTML pericolosamente impostato. Come mostrato, è possibile accedere a getValue static da this.constructor e funziona perfettamente.

+0

Non con 'React.Component' – Ajouve

+1

Errato: è possibile. Fidati di me su questo. Aggiungerò un JSBin –

Problemi correlati