我如何通过单击反应中的图像来查看模态?(instagram 克隆编码)
How do I see modal by clicking image in react??(instagram clone coding)
import { Modal } from "antd";
function Profile(){
const [visible, setVisible] = useState(false);
return(
<>
{myposts.map((mypost, index) => {
return (
<>
<img
key={index}
className="item"
onClick={() => {
setVisible(true);
}}
src={`http://localhost:5000/uploads/${mypost.photo}`}
/>
{visible && (
<Modal
title="Basic Modal"
visible={visible}
onOk={setVisible(false)}
onCancel={setVisible(false)}
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
)}
</>
);
})}
</>
)}
这是我的代码总结。我想当我点击图片时,它应该会变成模态。但是,它没有任何作用。我不知道哪一部分是错的。 (模态部分现在有一些奇怪的内容,我会在看到模态后更改这部分。)
尝试将模态框放在 mypost 地图之外,也许这就是模态框不显示的原因。所选图像的 src 路径可能需要另一种状态。
import { Modal } from "antd";
function Profile() {
const [visible, setVisible] = useState(false);
const [selectedImgSrc, setSelectedImgSrc] = useState("");
const imgClick = (imgSrc) => {
setSelectedImgSrc(imgSrc);
setVisible(true);
};
return (
<>
{myposts.map((mypost, index) => {
return (
<>
<img
key={index}
className="item"
onClick={() => {
imgClick(`http://localhost:5000/uploads/${mypost.photo}`);
}}
src={`http://localhost:5000/uploads/${mypost.photo}`}
/>
</>
);
})}
<Modal
title="Basic Modal"
visible={visible}
onOk={() => setVisible(false)}
onCancel={() => setVisible(false)}
>
<img src={selectedImgSrc} />
</Modal>
</>
);
}
看来问题出在您的代码中。
<Modal
title="Basic Modal"
visible={visible}
onOk={setVisible(false)}
onCancel={setVisible(false)}
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
onOk={setVisible(false)}
onCancel={setVisible(false)}
问题出在这些行上。
当您单击图像时,它会打开您的模式,但是当模式被渲染时,这些行将可见状态设置为 false
。因此模态框很快就会从 DOM 中删除。
这就是为什么您在单击图片时看不到模态窗口的原因。
请试试这个。
onOk={() => setVisible(false)}
onCancel={() => setVisible(false)}
你应该为 onOk 和 onCancel 属性传递一个函数。
import { Modal } from "antd";
function Profile(){
const [visible, setVisible] = useState(false);
return(
<>
{myposts.map((mypost, index) => {
return (
<>
<img
key={index}
className="item"
onClick={() => {
setVisible(true);
}}
src={`http://localhost:5000/uploads/${mypost.photo}`}
/>
{visible && (
<Modal
title="Basic Modal"
visible={visible}
onOk={setVisible(false)}
onCancel={setVisible(false)}
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
)}
</>
);
})}
</>
)}
这是我的代码总结。我想当我点击图片时,它应该会变成模态。但是,它没有任何作用。我不知道哪一部分是错的。 (模态部分现在有一些奇怪的内容,我会在看到模态后更改这部分。)
尝试将模态框放在 mypost 地图之外,也许这就是模态框不显示的原因。所选图像的 src 路径可能需要另一种状态。
import { Modal } from "antd";
function Profile() {
const [visible, setVisible] = useState(false);
const [selectedImgSrc, setSelectedImgSrc] = useState("");
const imgClick = (imgSrc) => {
setSelectedImgSrc(imgSrc);
setVisible(true);
};
return (
<>
{myposts.map((mypost, index) => {
return (
<>
<img
key={index}
className="item"
onClick={() => {
imgClick(`http://localhost:5000/uploads/${mypost.photo}`);
}}
src={`http://localhost:5000/uploads/${mypost.photo}`}
/>
</>
);
})}
<Modal
title="Basic Modal"
visible={visible}
onOk={() => setVisible(false)}
onCancel={() => setVisible(false)}
>
<img src={selectedImgSrc} />
</Modal>
</>
);
}
看来问题出在您的代码中。
<Modal
title="Basic Modal"
visible={visible}
onOk={setVisible(false)}
onCancel={setVisible(false)}
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
onOk={setVisible(false)}
onCancel={setVisible(false)}
问题出在这些行上。
当您单击图像时,它会打开您的模式,但是当模式被渲染时,这些行将可见状态设置为 false
。因此模态框很快就会从 DOM 中删除。
这就是为什么您在单击图片时看不到模态窗口的原因。
请试试这个。
onOk={() => setVisible(false)}
onCancel={() => setVisible(false)}
你应该为 onOk 和 onCancel 属性传递一个函数。