admin管理员组文章数量:1287490
In my main ponent I can open a modal by clicking on an icon. The content of the modal is a separate ponent, which is calling a method. If the method call is successful, I want to close the modal. But how can I do this?
Main ponent
class Example extends Component {
constructor(props) {
super(props)
this.state = {}
}
render() {
return (
<div>
<Modal trigger={ <Icon name='tags' /> } >
<Modal.Header>
<div>
<Header floated='left'>Title</Header>
<Button floated='right'>A Button</Button>
</div>
</Modal.Header>
<Modal.Content>
<ModalContent />
</Modal.Content>
</Modal>
</div>
)
}
}
Modal content
class ModalContent extends Component {
constructor(props) {
super(props)
this.state = {}
}
handleClick() {
method.call(
{ param },
(error, result) => {
if (result) {
// Now close the modal
}
}
);
}
render() {
return (
<Button onClick={this.handleClick} content='Save' />
)
}
}
In my main ponent I can open a modal by clicking on an icon. The content of the modal is a separate ponent, which is calling a method. If the method call is successful, I want to close the modal. But how can I do this?
Main ponent
class Example extends Component {
constructor(props) {
super(props)
this.state = {}
}
render() {
return (
<div>
<Modal trigger={ <Icon name='tags' /> } >
<Modal.Header>
<div>
<Header floated='left'>Title</Header>
<Button floated='right'>A Button</Button>
</div>
</Modal.Header>
<Modal.Content>
<ModalContent />
</Modal.Content>
</Modal>
</div>
)
}
}
Modal content
class ModalContent extends Component {
constructor(props) {
super(props)
this.state = {}
}
handleClick() {
method.call(
{ param },
(error, result) => {
if (result) {
// Now close the modal
}
}
);
}
render() {
return (
<Button onClick={this.handleClick} content='Save' />
)
}
}
Share
Improve this question
edited Apr 29, 2017 at 15:58
Cœur
38.7k26 gold badges203 silver badges277 bronze badges
asked Feb 21, 2017 at 11:41
user3142695user3142695
17.4k55 gold badges194 silver badges375 bronze badges
3 Answers
Reset to default 4You should add an onClose
property to <Modal>
element. See example below:
<Modal
trigger={<Button onClick={this.handleOpen}>Show Modal</Button>}
open={this.state.modalOpen}
onClose={this.handleClose}
>
Then you can add onClose
function to a button in your modal. Full example from the docs:
https://react.semantic-ui./modules/modal#modal-example-controlled
Pass a onSuccess
method as a props :
in the parent :
<ModalContent onSuccess={this.onModalSuccess}/>
in the child ponent :
handleClick() {
method.call(
{ param },
(error, result) => {
if (result) {
this.props.onSuccess()
}
}
);
}
In this way you keep your open/close logic in the parent ponent.
semantic-ui have property open
. Just set true
or false
class Example extends Component {
constructor(props) {
super(props)
this.state = {
open: false
}
open = () => this.setState({ open: true })
close = () => this.setState({ open: false })
render() {
return (
<div>
<Modal open={this.state.open} trigger={ <Icon name='tags' /> } >
<Modal.Header>
<div>
<Header floated='left'>Title</Header>
<Button floated='right'>A Button</Button>
</div>
</Modal.Header>
<Modal.Content>
<ModalContent />
</Modal.Content>
</Modal>
</div>
)
}
}
本文标签: javascriptHow to close semantic ui modal in another react componentStack Overflow
版权声明:本文标题:javascript - How to close semantic ui modal in another react component? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741275295a2369692.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论