Üzerinde Birden çok Doğrulama React.PropTypes
kullanarak tek bir prop üzerinde birden çok doğrulamaya sahip olmanın bir yolu var mı. Özellikle bir özel doğrulama ve bir hisse senedi doğrulamasını karıştırmak ister.React PropTypes
İki sahne var, bir nesne options
ve bir dize value
. Ben props.value
bir dize değil, aynı zamanda nesnede bir anahtar olduğunu kontrol etmek istiyorum. bu büyük işleri
propTypes:
options: React.PropTypes.Object.isRequired
value: (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
, ama aynı zamanda benim değeri bir dize türüdür sağlamak istiyoruz: Bu CoffeeScript kullanmak gibi görünüyor. Eminim ki, bu özelleştirme fonksiyonunda hiçbir doğrulama yapamazdım, ama ideal olarak, React.PropTypes.string.isRequired
'u kullanmayı çok isterim. Ben sadece özel işlevine koyup onu çalıştırmayı denedim ama işe yaramadı. Aşağıdaki işe yaramadı ya:
value: React.PropTypes.string.isRequired && (props, propName, componentName) ->
unless props[propName] of props.options
new Error('my custom message')
bu doğrulayıcıda inşa hızla reaksiyona girerek kullanarak çalışan, ya da benim işlevinde bunu yeniden tek seçeneği almanın bir yolu var mı? dokümanlarında Reusable Components sayfadan
Özel doğrulama işlemime bir şeyler eklemeye devam edebileceğimin farkındayım. muhtemelen [propName] == 'string' 'türünde bir yazım yapmadıkça yeni bir hata (' msg ') döndürerek yapabilirim, ancak tepki vermenin daha resmi bir yolunun olup olmadığını soruyorum (yani hala 'React.PropTypes.string.isRequired' işlevini kullanın. – PhilVarg
@ PhilVarg'da neler olup bittiği ile ilgili daha belirgin olanı kendi proptipinizi oluşturmalısınız. İnşa edilen propTyp'ların hiçbiri bildiğim kadarıyla çapraz kontroller yapmaz. Bir yere bir modüle koyabilir ve güzel bir adla içe aktarabilir ve hatta 'options' bölümünün dinamik olmasına, örn. foo: isKeyOfProp ('seçenekler') '. – FakeRainBrigand