我如何重用propTypes让我们在input
中说InputWrapper
元素。
例如:
class TextInput extends Component {
static propTypes = {
theme: PropTypes.oneOf(['themeOne', 'themeTwo']),
inputProps: ??? // I would like to use the built-in props for React.DOM.input
}
render() {
return <div className={cx(this.props.theme)}>
<input
{...this.props.inputProps}
type="text"
/>
</div>
}
}
是否存在内置组件的propTypes定义,我可以重用它?
答案 0 :(得分:1)
不确定我是否理解正确,但您可以使用:
class TextInput extends Component {
static propTypes = {
theme: PropTypes.oneOf(['themeOne', 'themeTwo']),
inputProps: PropTypes.shape({
type: PropTypes.string,
value: PropTypes.string // etc...
})
}
render() {
return <div className={cx(this.props.theme)}>
<input
{...this.props.inputProps}
type="text"
/>
</div>
}
}
答案 1 :(得分:1)
首先无需验证输入道具。当您将它们传递给input
时,它会验证它们。
这通常是这样做的:
static propTypes = {
theme: PropTypes.oneOf(['themeOne', 'themeTwo']),
}
render() {
const {theme, ...inputProps} = this.props;
return <div className={cx(theme)}>
<input
{...inputProps}
type="text"
/>
</div>
}
React实际上并不验证传递给本机组件的属性。如果要验证它们,则必须自己定义验证器道具并重复使用它们。