Ale*_*lex 5 forms modal-dialog reactjs react-bootstrap
我正在使用react-bootstrap来启动模态表单.
为此,我在我调用的产品组件中创建了一个模态组件PopupForm,一个表单组件ProductForm,一个产品组件
<ModalTrigger
modal={<PopupForm form={<ProductForm ref="pform" data={this.props.prod_data} />}/>}>
<Button bsStyle='primary' bsSize='small' style={{marginRight:'5px'}} >
<span className="glyphicon glyphicon-pencil" />
</Button>
</ModalTrigger>
Run Code Online (Sandbox Code Playgroud)
PopupForm:
var PopupForm = React.createClass({
render: function(){
return (
<Modal {...this.props} bsStyle='primary'
style={{width:200}} title='Edition' animation={false}>
<div className='modal-body'>
{this.props.form}
</div>
<div className='modal-footer'>
<Button onClick={this.props.form.submit()}>Editer</Button>
<Button onClick={this.props.onRequestHide}>Close</Button>
</div>
</Modal>
)
}
});
Run Code Online (Sandbox Code Playgroud)
在此onClickEditer,我想调用的方法submit中的ProductForm组成部分,该ProductForm部分被发送到PopupForm的道具的形式,我展示它是这样{this.props.form},但我不能调用该方法{this.props.form.submit()}
其实我想使用的模式按钮如果不可能触发ProductForm方法,我将在ProductForm中使用提交按钮.
这是我的ProductForm:
var ProductForm = React.createClass({
componentDidMount: function() {
this.props.submit = this.submit;
},
getInitialState: function () {
return {canSubmit: false};
},
enableButton: function () {
this.setState({
canSubmit: true
});
},
disableButton: function () {
this.setState({
canSubmit: false
});
},
submit: function (model) {
alert('ok');
},
render: function () {
return (
<Formsy.Form className="" name="test" onValidSubmit={this.submit} onValid={this.enableButton} onInvalid={this.disableButton}>
<CsInput value={this.props.data.name}
label="Nom" id="product_name"
name={this.props.data.name}
validations={{matchRegexp: /^[A-Za-z0-9]{1,30}$/}}
validationError={validations_errors[1]} required/>
{/*<button type="submit" disabled={!this.state.canSubmit}>Submit</button>*/}
</Formsy.Form>
);
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢.
如果您有嵌套组件,您可以像这样调用另一个组件的函数:
孩子:
var Component1 = React.createClass({
render: function() {
return (
<div><button onClick={this.props.callback}>click me</button></div>
)
}
})
Run Code Online (Sandbox Code Playgroud)
家长:
var Component2 = React.createClass({
doSomethingInParent: function() {
console.log('I called from component 2');
},
render: function() {
return (
<div><component1 callback={this.doSomethingInParent} /></div>
)
}
})
Run Code Online (Sandbox Code Playgroud)
你的情况也是如此。您的代码中不是很清楚,因此我无法帮助您处理代码本身。如果您对此感到困惑,请以分层方式发布您的整个代码,以便它更具可读性。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |