【发布时间】:2021-02-23 06:12:02
【问题描述】:
如主题中所述的问题。目标是打开一个模式,并使用 item.imdbID 来获取数据。就像现在一样,为表格中的每个条目打开一个模式,并且为每个条目发送 id 属性。
const { toggle, visible } = useModal();
<tbody>
{items.map((item, i) => (
<tr key={i}>
<MTd>{item.Title}</MTd>
<MTd>{item.Year}</MTd>
<MTd>{item.imdbID}</MTd>
<MTd>{item.Type}</MTd>
<MTd><button onClick={toggle}>Detaljer</button>
<DetailedViewModal visible={visible} toggle={toggle} id={item.imdbID} />
</MTd>
</tr>
))}
</tbody>
我知道当函数驻留在同一个文件中时可以执行 <button onClick={e => testClick(item.imdbID)}>Details</button>,但不确定如何使用模态处理。
模态是定制的; 使用Modal.js:
const useModal = () => {
const [visible, setVisible] = useState(false);
function toggle() {
setVisible(!visible);
}
return {toggle, visible}
};
Modal.js
const Modal = ({ visible, toggle, body }) => visible ? ReactDOM.createPortal(
<div className="modal">
<div className="modal-pop" role="dialog" aria-modal="true">
<div>{body}</div>
<button type="button" onClick={toggle}>Close</button>
</div>
<div className="modal-overlay"></div>
</div>, document.body
) : null;
DetailedViewModal.js
return (
<>
<Modal visible={visible} toggle={toggle} body={modalBody()} />
</>
)
非常感谢任何使这项工作的好建议。
【问题讨论】:
标签: javascript reactjs html-table modal-dialog