我为表单中的字段设置了一个高阶组件,该组件检查安装时的默认值:
componentDidMount() {
let existingValue = this.props.getValue(this.props.name)
if (existingValue) {
this.setState({ value: existingValue })
} else {
this.props.update(this.props.name, '')
}
}
,其中this.props.update
在表单组件父级中设置默认值。这适用于任何文本类型的字段或选择,但不适用于复选框。
在我的特定字段类型中,我使用PropTypes检查值类型:
Text.propTypes = {
value: PropTypes.string.isRequired,
}
但是在我的复选框组件中,我想避免这样做:
Checkbox.propTypes = {
value: PropTypes.oneOf(['', bool]),
}
我不相信可以为此使用defaultProps
,因为我为该字段使用了HoC,并且为每种字段类型使用了一个组件。有没有一种方法可以保留我的结构而无需对值和值类型进行复杂的检查?