Czy istnieje sposób, aby mieć wiele walidacji na jednym wniosku za pomocą React.PropTypes
. w szczególności chcesz połączyć niestandardową walidację i walidację towaru.Wiele poprawności na React PropTypes
Mam dwa rekwizyty, obiekt options
i ciąg value
. chcę sprawdzić, czy props.value
jest ciągiem, ale także kluczem na obiekcie. przy użyciu coffeescript wygląda to następująco:
propTypes:
options: React.PropTypes.Object.isRequired
value: (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
działa to świetnie, ale chcę również, aby moja wartość była typu ciąg. Jestem pewien, że mogę ręcznie trzymać się tej walidacji w funkcji niestandardowej bez problemu, ale najlepiej, chciałbym tylko użyć React.PropTypes.string.isRequired
. Próbowałem po prostu wstawienie go do funkcji niestandardowej i wykonanie go, ale to nie zadziałało. następuje nie działa albo:
value: React.PropTypes.string.isRequired && (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
czy istnieje sposób, aby dostać tę pracę za pomocą reaguje zbudowany w walidatora lub jest przepisywanie go w mojej funkcji jedyną opcją?
Jestem świadomy, że mogę nadal dodawać rzeczy do mojej niestandardowej walidacji. najprawdopodobniej można by to uzyskać, wykonując 'return new Error ('msg'), chyba że typeof rekwizyty [propName] == 'string'', ale pytam, czy jest bardziej formalny sposób, który reaguje (np. użyj 'React.PropTypes.string.isRequired'), ponieważ jest bardziej zrozumiały co do tego, co się dzieje – PhilVarg
@PhilVarg potrzebujesz stworzyć swój własny typ. Żaden z wbudowanych typów PropTypów nie wykonuje żadnych sprawdzeń krzyżowych, o ile wiem. Możesz umieścić go w module gdzieś i zaimportować go z ładną nazwą, a nawet część 'options' może być dynamiczna, np. 'foo: isKeyOfProp (" opcje ")'. – FakeRainBrigand