2014-11-14 11 views

Odpowiedz

234

Można użyć React.PropTypes.shape do sprawdzania właściwości:

propTypes: { 
    data: React.PropTypes.shape({ 
     id: React.PropTypes.number.isRequired, 
     title: React.PropTypes.string 
    }) 
} 

Aktualizuj

Jak @Chris zauważył w komentarzach, jak z React wersja 15.5.0 React.PropTypes została przeniesiona do pakietu prop-types .

import PropTypes from 'prop-types';  

propTypes: { 
    data: PropTypes.shape({ 
     id: PropTypes.number.isRequired, 
     title: PropTypes.string 
    }) 
} 

More info

+1

Precyzyjna odpowiedź @nilgun. Możesz znaleźć dokumentację dla propTypes React: https://facebook.github.io/react/docs/reusable-components.html – williamle8300

+0

'React.PropTypes' jest teraz przestarzałe. Zamiast tego użyj 'PropTypes' z pakietu' prop-types'. [Więcej tutaj] (https://facebook.github.io/react/blog/2017/04/07/react-v15.5.0.html#migrating-from-react.proptypes) – Chris

13

Jeśli React.PropTypes.shape nie daje poziom typu sprawdzanie chcesz, rzucić okiem na tcomb-react.

Zapewnia toPropTypes() funkcję, która pozwala sprawdzić poprawność schematu zdefiniowanego z biblioteką tcomb poprzez wykorzystanie wsparcia React dla definiowania custom propTypes validators, bieganie walidacji za pomocą tcomb-validation.

Basic example from its docs:

// define the component props 
var MyProps = struct({ 
    foo: Num, 
    bar: subtype(Str, function (s) { return s.length <= 3; }, 'Bar') 
}); 

// a simple component 
var MyComponent = React.createClass({ 

    propTypes: toPropTypes(MyProps), // <--- ! 

    render: function() { 
    return (
     <div> 
     <div>Foo is: {this.props.foo}</div> 
     <div>Bar is: {this.props.bar}</div> 
     </div> 
    ); 
    }  
}); 
-1
user: React.PropTypes.shap({ 
    age: (props, propName) => { 
     if (!props[propName] > 0 && props[propName] > 100) { 
      return new Error(`${propName} must be betwen 1 and 99`) 
     } 
     return null 
    }, 
}) 
+3

Tak wiele wysiłku włożono w to odpowiedź może być trudna do zrozumienia, jeśli jest to po prostu kod. Zwykle komentowanie rozwiązania za pomocą kilku zdań. Edytuj odpowiedź i dodaj wyjaśnienie. – MikaS

Powiązane problemy