您可以使用react-modal輕鬆完成。這裏是一個例子,作爲獎勵我點擊打開的圖像時添加了關閉模式。圖像src及其描述應作爲數據對象中的道具傳遞給popUp組件。
PopUp.js:
import React from 'react';
import Modal from 'react-modal';
import ModalButton from './modal-button';
import style from './style.css';
class PopUp extends React.Component {
constructor() {
super();
this.state = { modalOpened: false };
this.toggleModal = this.toggleModal.bind(this);
}
toggleModal() {
this.setState(prevState => ({ modalOpened: !prevState.modalOpened }));
}
render() {
const { data } = this.props;
return (
<div className={style.modalWrapper}>
<ModalButton handleClick={this.toggleModal}>
click to open modal
</ModalButton>
<Modal
className={{ base: [style.base]}}
overlayClassName={{ base: [style.overlayBase] }}
isOpen={this.state.modalOpened}
onRequestClose={this.toggleModal}
contentLabel="Modal with image"
>
<img
onClick={this.toggleModal}
src={data.src}
alt='image displayed in modal'
/>
<span className={style.text}>{data.description}</span>
</Modal>
</div>
);
}
}
export default PopUp;
分離按鈕,當你要求:
import React from 'react';
import style from './style.css';
const ModalButton = props => (
<button className={style.button} onClick={props.handleClick}>
{props.children}
</button>);
export default ModalButton;
梅吉,[答案](https://stackoverflow.com/a/45792200/1404066) @PatrykWlaź給出的是一個很好的例子。您應該將其標記爲已接受的答案(如果您仍需要幫助,請提出後續問題或修改您的問題)。 – Kenigmatic