2016-06-20 18 views
5

Ho un problema nel specificare una proprietà di tipo "enum" in risposta. Secondo la documentazione qui React multiple components il seguente frammento dovrebbe funzionare:Reagire PropTypes.oneOf per specificare un enum non funziona

position : React.PropTypes.oneOf(['rightTop','rightBottom']) 

Ma io ottenere il seguente errore

ERROR in ./app/components/mqttComponents/mqttPresence.jsx 
Module build failed: SyntaxError:/Users/giuseppe/Projects/sw-director/app/components/mqttComponents/mqttPresence.jsx: Unexpected token (68:36) 
66 | propTypes : { 
67 |  //position: React.PropTypes.string.isRequired, 
> 68 |  position : React.PropTypes.oneOf(['rightTop','rightBottom']), 
             ^
69 |  showMqttClientStatus : React.PropTypes.bool.isRequired, 
70 |  mqtt: React.PropTypes.object 
71 | } 

Non mi rendo conto che è l'errore? Forse è qualcosa legato alla nuova sintassi ES6?

+0

Poiché si tratta di un errore di sintassi, questo non ha nulla a che fare con 'oneOf' in modo specifico. –

+0

@FelixKling Lo so, quindi c'è una discrepanza tra la documentazione di 'oneOf' e la sua implementazione. Secondo la documentazione è una funzione che accetta un array come argomento mentre non lo è. Quindi, cos'è ? –

+0

Anche in questo caso, è un errore ** sintassi **, non un errore * runtime *. Il problema non è con la funzione 'oneOf' o il valore che si passa. Il problema è con i caratteri che hai digitato nel file (semplificato). Ma perché c'è un errore lì, non lo so. –

risposta

13

Con la sintassi ES6 i propTypes in React devono essere definiti come una proprietà statica. Quindi l'unica differenza dovrebbe essere nella dichiarazione propTypes.

static propTypes = { 
    position : React.PropTypes.oneOf(['rightTop','rightBottom']), 
    showMqttClientStatus : React.PropTypes.bool.isRequired 
} 
+0

Funziona completamente !! Sapevo che era qualcosa legato a ES6 ma non potevo sistemarlo ... Grazie –

Problemi correlati