Я не настолько опытен с React, но меня назначили в существующий сложный проект React.У меня есть всплывающее окно, которое показывалось только один раз, но оно может загрузить определенный компонент.Я хочу закрыть всплывающее окно с помощью кнопки из других компонентов, на самом деле функция закрытия всплывающего окна существует в компоненте-обертке, но как вызвать его из неклассового компонента?
У меня есть всплывающее окно с именем ModalView.jsx
, это обертка:
class ModalView extends Component {
static propTypes = {
//...
isShow: PropTypes.bool,
};
static defaultProps = {
isShow: false,
}
render() {
const {
isShow,
showedComponent,
} = this.props;
onCancel = () => {
const { showPagePopup } = this.props;
showPagePopup({ isShow: false });
}
return (
<div
className={cx('page-popup modal fade', {
'd-block show': isShow,
})}
tabIndex="-1"
role="dialog"
aria-hidden="true"
>
<div className="modal-dialog" role="document">
<div className="modal-content">
<button type="button" className="close close-modal" data-dismiss="modal" aria-label="Close" onClick={() => this.onCancel()}>
<IconCloseModal width="14" height="14" className="icon icon-close" />
</button>
<div className="modal-body">
{showedComponent}
</div>
</div>
</div>
</div>
);
}
}
, и у меня есть компонент, который будет показан в {showedComponent}
с именем MyCard.jsx
:
const MyCard = ({
myRules = isShow
}) => {
const openPage = () => {
// -------how to call onCancel() function from ModalView.jsx in this line?--------
var pageUrl = `xxx`;
setTimeout(function(){
window.open(pageUrl, '_blank');
}, 3000);
}
return (
...
<PrimaryButton onClick={() => openPage()} className="hide-for-print-version ml-3">
Open Page
</PrimaryButton>
...
);
};
Так как вызвать onCancel()
функцию из ModalView.jsx
до MyCard
постоянная составляющая?