React.js + 在一个组件中使用 Reactstrap 多个模态框
React.js + Reactstrap multiple modals in one component
我正在尝试使用 reactstrap 在我的页脚组件中显示 2 个不同的 onClick 模态。
我设法构建了一个基于 class 的页脚,它根据状态和外部模态元素切换模态可见性以在单击每个 'link' 时显示模态。
但我仍在尝试找出一种方法来在每个 link.
的相同模态上显示不同的内容(标题和模态 body)
//FOOTER
import React, { Component } from 'react';
import MainModal from '../../elements/modal';
class Footer extends Component{
state = {
modal: false
}
toggle = () => {
this.setState({
modal: !this.state.modal
})
}
render(){
return(
<footer className="container-fluid footer">
<div className="modals sm-text-center">
<span className="sm-block"><span className="fLink" onClick={this.toggle}>Terms of use</span> | <span className="fLink" onClick={this.toggle}>Privacy Policy</span></span>
<div className="clearfix"/>
</div>
<MainModal type="basic" toggle={this.toggle} modal={this.state.modal}/>
</footer>
)
}
}
export default Footer;
//MODAL TEMPLATE
import React, { Component } from 'react';
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
class MainModal extends Component {
render(){
return(
<Modal isOpen={this.props.modal} toggle={this.props.toggle}>
<ModalHeader toggle={this.props.toggle}>Modal title</ModalHeader>
<ModalBody>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</ModalBody>
</Modal>
);
}
};
export default MainModal;
如何best/elegant显示使用条款和隐私政策的内容?
将 "title" 和正文内容传递给 toggle() 方法,然后传递给 <MainModal />
模态:
<Modal isOpen={this.props.isModalOpen} toggle={this.props.toggle}>
<ModalHeader toggle={this.props.toggle}>
{this.props.modalTitle}
</ModalHeader>
<ModalBody>{this.props.modalBody}</ModalBody>
</Modal>
页脚:
<span
className="fLink"
onClick={e =>
this.toggle("Terms of Use", "Body for Terms of User")
}
>
Terms of use
</span>
<span
className="fLink"
onClick={e =>
this.toggle("Privacy Policy", "Body for Privacy Policy")
}
>
Privacy Policy
</span>
州:
state = {
isModalOpen: false,
modalTitle: "",
modalBody: ""
};
切换方法:
toggle = (title, body) => {
this.setState({
isModalOpen: !this.state.modal,
modalTitle: title,
modalBody: body
});
};
这是一个完整的解决方案:https://codesandbox.io/s/63jqmvzvn
希望对您有所帮助。
我正在尝试使用 reactstrap 在我的页脚组件中显示 2 个不同的 onClick 模态。
我设法构建了一个基于 class 的页脚,它根据状态和外部模态元素切换模态可见性以在单击每个 'link' 时显示模态。
但我仍在尝试找出一种方法来在每个 link.
的相同模态上显示不同的内容(标题和模态 body)//FOOTER
import React, { Component } from 'react';
import MainModal from '../../elements/modal';
class Footer extends Component{
state = {
modal: false
}
toggle = () => {
this.setState({
modal: !this.state.modal
})
}
render(){
return(
<footer className="container-fluid footer">
<div className="modals sm-text-center">
<span className="sm-block"><span className="fLink" onClick={this.toggle}>Terms of use</span> | <span className="fLink" onClick={this.toggle}>Privacy Policy</span></span>
<div className="clearfix"/>
</div>
<MainModal type="basic" toggle={this.toggle} modal={this.state.modal}/>
</footer>
)
}
}
export default Footer;
//MODAL TEMPLATE
import React, { Component } from 'react';
import { Modal, ModalHeader, ModalBody } from 'reactstrap';
class MainModal extends Component {
render(){
return(
<Modal isOpen={this.props.modal} toggle={this.props.toggle}>
<ModalHeader toggle={this.props.toggle}>Modal title</ModalHeader>
<ModalBody>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</ModalBody>
</Modal>
);
}
};
export default MainModal;
如何best/elegant显示使用条款和隐私政策的内容?
将 "title" 和正文内容传递给 toggle() 方法,然后传递给 <MainModal />
模态:
<Modal isOpen={this.props.isModalOpen} toggle={this.props.toggle}>
<ModalHeader toggle={this.props.toggle}>
{this.props.modalTitle}
</ModalHeader>
<ModalBody>{this.props.modalBody}</ModalBody>
</Modal>
页脚:
<span
className="fLink"
onClick={e =>
this.toggle("Terms of Use", "Body for Terms of User")
}
>
Terms of use
</span>
<span
className="fLink"
onClick={e =>
this.toggle("Privacy Policy", "Body for Privacy Policy")
}
>
Privacy Policy
</span>
州:
state = {
isModalOpen: false,
modalTitle: "",
modalBody: ""
};
切换方法:
toggle = (title, body) => {
this.setState({
isModalOpen: !this.state.modal,
modalTitle: title,
modalBody: body
});
};
这是一个完整的解决方案:https://codesandbox.io/s/63jqmvzvn
希望对您有所帮助。