C'è un modo per avere più convalide su un singolo puntello usando React.PropTypes
. in particolare desidera miscelare una convalida personalizzata e una convalida delle scorte.Convalida multipla su Propiy React
Ho due oggetti di scena, un oggetto options
e una stringa value
. Voglio verificare che props.value
sia una stringa ma anche una chiave sull'oggetto. utilizzando CoffeeScript questo appare come:
propTypes:
options: React.PropTypes.Object.isRequired
value: (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
questa grande opera, ma voglio anche al fine di garantire che il mio valore è un tipo stringa. Sono sicuro di poter inserire manualmente quella convalida nella funzione personalizzata senza problemi, ma idealmente, mi piacerebbe solo usare React.PropTypes.string.isRequired
. Ho provato a metterlo nella funzione personalizzata e ad eseguirlo ma non ha funzionato. quanto segue non funzionavano:
value: React.PropTypes.string.isRequired && (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
c'è un modo per ottenere questo lavoro utilizzando reagisce costruito nel validatore, o è riscriverlo nella mia funzione l'unica opzione?
Sono consapevole di poter continuare ad aggiungere le cose alla convalida personalizzata. potrebbe probabilmente andare avanti con 'return new Error ('msg') a meno che typeof props [propName] == 'string'', ma sto chiedendo se esiste un modo più formale che fornisce la reazione (cioè essere ancora in grado di usa 'React.PropTypes.string.isRequired') perché è molto più evidente su ciò che sta succedendo su – PhilVarg
@PhilVarg è necessario creare il proprio proptype. Nessuno dei propTypes incorporati esegue alcun controllo incrociato per quanto ne so. Puoi metterlo in un modulo da qualche parte e importarlo con un bel nome, e persino avere la parte 'options' dinamica, ad es. 'pippo: isKeyOfProp ('opzioni')'. – FakeRainBrigand