gpt4 book ai didi

reactjs - React Bootstrap Validation 在子组件中使用经过验证的输入

转载 作者:行者123 更新时间:2023-12-03 13:20:37 24 4
gpt4 key购买 nike

我正在使用react-bootstrap-validation装饰react-bootstrap输入标签。

ValidatedInput 要求它位于 Form 组件内。当我将 ValidatedInput 添加到自定义子组件时,我收到一条错误,指出它需要位于表单内,但我猜它现在位于树的更下方,因此看不到表单。

是否有一种方法可以引用父表单,以便 ValidatedInput 可以看到父表单。

查看验证库的源代码,我可以看到 ValidationInput 需要注册到表单,但不确定如何从子组件中执行此操作。

// Parent render 
render(){
<Form
className="fl-form fl-form-inline fl-form-large"
name="customer-details"
onValidSubmit={this._handleValidSubmit}
onInvalidSubmit={this._handleInvalidSubmit}
validationEvent='onChange'>

<TitleSelect handleChange={this.updateDropDown} value={this.state.form.title} />

</form>
}


// Sub class containing the ValidatedInput
export class TitleSelect extends React.Component {

static propTypes = {
handleChange: React.PropTypes.func.isRequired,
value: React.PropTypes.string.isRequired
}

render(){

return (
<ValidatedInput
name="title"
label='title'
type='select'
value={this.props.value}
onChange={this.props.handleChange}
groupClassName='form-group input-title'
wrapperClassName='fl-input-wrapper'
validate='required'
errorHelp={{
required: 'Please select a title.'
}}>

<option value="" ></option>
<option value="Mr">Mr</option>
<option value="Mrs">Mrs</option>
<option value="Master">Mstr.</option>
<option value="Ms">Ms</option>
<option value="Miss">Miss</option>
<option value="Reverend">Rev.</option>
<option value="Doctor">Dr.</option>
<option value="Professor">Prof.</option>
<option value="Lord">Lord</option>
<option value="Lady">Lady</option>
<option value="Sir">Sir</option>
<option value="Master">Mstr.</option>
<option value="Miss">Miss</option>
</ValidatedInput>
)
}
};

最佳答案

目前这是不可能做到的。一旦我们在 React 中获得适当的基于父级的上下文,这将在未来的版本中成为可能,我会将组件迁移到上下文。但现在我建议将您的 render() 方法拆分为几个较小的方法并重用它们。

关于reactjs - React Bootstrap Validation 在子组件中使用经过验证的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32228905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com