2014-11-13 15 views
7

Sono molto nuovo per reagire (o per dire tecnologie web). Ho iniziato a creare un'applicazione che utilizza componenti diversi. Quando ho esaminato la documentazione, ho pensato di inserire isRequired in propTypes, costringe l'utente a fornire tutti gli attributi isRequired quando utilizza il componente.propTypes isRequired constraint mis-leading behavior in react

Ma, in questo esempio, anche se non si passa isRequired attributi sono in grado di caricare il componente.

var PanelPreview = React.createClass({ 
    getInitialState: function(){ 
     return { captionIndex: 0 }; 
    }, 
    propTypes: { 
     beforeSrc: React.PropTypes.string.isRequired, 
     afterSrc: React.PropTypes.string.isRequired, 
     captionTable: React.PropTypes.array 
    }, 
}); 
module.exports = PanelPreview; 

applicazione utilizzando questo componente:

React.render(
     < PanelPreview />, 
     document.getElementById('main') 
    ); 

voglio limitare l'utente del componente per fornire questi due valori altro gettare una sorta di errore.

risposta

7

La valutazione fallita di puntelli non è attualmente considerata un errore critico. Tuttavia ci sarà un Warnning registrati nella console:

Warning: Required prop `beforeSrc` was not specified in `PanelPreview`. 

Questo accade solo in una build non di produzione di reagire. Nella produzione non viene registrato nulla. Vedere questo violino per un esempio http://jsfiddle.net/5mafp3eu/1/

Si è discusso di avere React fail-fast per errori di validazione del puntello (vedere i problemi di seguito), sembra che accadrà alla fine, ma non penso che sia su nessuna tabella di marcia ancora.

+0

Grazie Wicky, grazie per chiarire esso. – mAc

+1

@ mAc solo per aggiungere a questo, FB ha recentemente rilasciato Flow per il controllo dei tipi JS, http://flowtype.org. Gestisce i tipi di puntello come ti aspettavi (ma sfortunatamente non sembra che sia una semplice aggiunta a qualsiasi configurazione) – WickyNilliams