답변:
React.PropTypes.shape
속성을 확인 하는 데 사용할 수 있습니다 .
propTypes: {
data: React.PropTypes.shape({
id: React.PropTypes.number.isRequired,
title: React.PropTypes.string
})
}
최신 정보
@Chris React.PropTypes
가 주석에서 지적했듯이 React 버전 15.5.0 은 package로 이동했습니다 prop-types
.
import PropTypes from 'prop-types';
propTypes: {
data: PropTypes.shape({
id: PropTypes.number.isRequired,
title: PropTypes.string
})
}
경우 React.PropTypes.shape
당신이 원하는 유형 검사의 수준을 제공하지 않습니다, 한 번 봐 가지고 tcomb을-반응 .
tcomb-validation을 사용하여 유효성 검증을 실행하여 사용자 정의 유효성 검증기 를 정의하기위한 React의 지원을 사용 toPropTypes()
하여 tcomb 라이브러리로 정의 된 스키마를 유효성 검증 할 수 있는 기능을 제공합니다 .propTypes
문서의 기본 예 :
// 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>
);
}
});
중첩은 한 수준 이상의 깊이에서 작동합니다. 이것은 URL 매개 변수를 확인할 때 유용했습니다.
propTypes = {
match: PropTypes.shape({
params: PropTypes.shape({
id: PropTypes.string.isRequired
})
})
};
id
경우에만 필요 하다는 것을 의미합니까? 즉 , 소품 이있는 객체에는 isRequired 입니까? 즉, 매개 변수가 제공되지 않으면 여전히 유효합니까? match.params
isRequired
match
params
id
match
필요 params
하고 params
필요 "로 읽을 수 있습니다 id
.
match
가 있고 If match
contains params
이면 params
string이 포함되어 있습니다 id
.
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
},
})