html - 为什么在 react-bootstrap 中映射图像显示错误(重复输出)
问题描述
大家好,我正在尝试在 react-bootstrap 中使用映射来显示我的图像。我有 3 个按钮,一旦用户单击此按钮,它将显示不同的信息和 4 个不同的图像。但在我的情况下,一旦我点击按钮,它将显示 12 个不同的图像。我怎样才能解决这个问题?请帮我。
这是我的数组数据:
const facsInfo = [
{
Id: "1",
Title: "De'Spa",
Description: "",
upperleftimg:"./Images/DeSpa1.jpg",
upperrightimg:"./Images/DeSpa1.jpg",
bottomleftimg:"./Images/DeSpa1.jpg",
bottomrightimg:"./Images/DeSpa1.jpg",
},
{
Id: "2",
Title: "De'Resto",
Description:" ",
upperleftimg:"./Images/DeResto1.jpg",
upperrightimg:"./Images/DeResto2.jpg",
bottomleftimg:"./Images/DeResto3.jpg",
bottomrightimg:"./Images/DeResto4.jpg",
},
{
Id: "3",
Title: "Meeting Room",
Description: "",
Opentime:"Opening hours: 10.00 am – 8.00 pm",
upperleftimg:"./Images/Room1.jpg",
upperrightimg:"./Images/Room2.jpg",
bottomleftimg:"./Images/Room3.jpg",
bottomrightimg:"./Images/Room4.jpg",
},
]
这是我的 Facilities.JS 代码:
const Facilities = () => {
const [currentId, setCurrentId] = useState("1");
useEffect(() => {
console.log(currentId);
}, [currentId]);
const showSelectedFact = () => {
var fac = facsInfo.filter((x) => x.Id === currentId)[0];
const { Title, Description, Opentime, Id } = fac;
return (
<div key={Id}>
<h1 className="fontSB">{Title}</h1>
<p>{Description}</p><br></br>
<p><b>{Opentime}</b></p>
</div>
);
};
const showSelectedUpperImage = () => {
var fac = facsInfo.filter((x) => x.Id === currentId)[0];
const { upperleftimg, upperrightimg, Id } = fac;
return (
<>
<Col key={Id} className="facsImage text-center" md={12} lg={6}>
<img className="img-fluid" src={upperleftimg}></img>
</Col>
<Col key={Id} className="facsImage text-center" md={12} lg={6}>
<img className="img-fluid" src={upperrightimg}></img>
</Col>
</>
);
};
const showSelectedBottomImage = () => {
var fac = facsInfo.filter((x) => x.Id === currentId)[0];
const { bottomleftimg, bottomrightimg, Id } = fac;
return (
<>
<Col key={Id} className="facsImage text-center" sm={12} md={12} lg={6}>
<img className="img-fluid" src={bottomleftimg}></img>
</Col>
<Col key={Id} className="facsImage text-center" sm={12} md={12} lg={6}>
<img className="img-fluid" src={bottomrightimg}></img>
</Col>
</>
);
};
return (
<>
<Container fluid>
<Row className="facsbuttwrapper text-center">
<Col sm={4} lg={4}>
<Button
value="1"
variant="custom"
onClick={(e) => setCurrentId(e.target.value)}
>
De'Spa
</Button>
</Col>
<Col sm={4} lg={4}>
<Button
value="2"
variant="custom"
onClick={(e) => setCurrentId(e.target.value)}
>
De'Resto
</Button>
</Col>
<Col sm={4} lg={4}>
<Button
value="3"
variant="custom"
onClick={(e) => setCurrentId(e.target.value)}
>
Meeting Room
</Button>
</Col>
</Row>
</Container>
<Container fluid>
<Row className="facsDetail fontReg">
<Col className="text-center" md={12} lg={12}>
{showSelectedFact()}
</Col>
</Row>
</Container>
<Container fluid>
<Row>
{showSelectedUpperImage()}
</Row>
</Container>
<Container fluid>
<Row>
{showSelectedBottomImage()}
</Row>
</Container>
</>
)
}
export default Facilities
解决方案
推荐阅读
- postgresql - 在将数据插入 Postgresql 表时遇到一些麻烦
- c# - 如何使用 Dev Express Office File API 在现有文档上插入工作表
- javascript - I have a question on the part of jQuery ID Selector
- c - 存档的应用程序无法打开文本文件,从 Xcode 成功打开
- python - or.rename(src,dest) 在 python 中抛出文件不是错误
- c# - 使用 Docker 时如何为 NuGet 配置代理?
- r - 上传文件,然后在闪亮的应用程序中对地址进行地理编码
- linux - 从使用 wget 重定向的页面获取文件
- c# - 在 LINQ 选择中,如何选择列表的 FirstOrDefault?
- java - 我什么时候应该在子类中覆盖超类的方法?如果没有额外的功能,是否必须覆盖所有超类的方法?