【发布时间】:2021-08-10 07:40:14
【问题描述】:
我正在开发一个应用程序,现在我需要在单击按钮时将一个活动类添加到我正在显示的卡片中。
到目前为止,我在单击时获得了卡片的索引。 单击后,所需的卡片将更改其背景颜色。 但是,当我单击另一个按钮时,前一张卡片仍然处于活动状态并具有相同的颜色。我想一次只显示一张有效的卡片。
import React, { Fragment } from "react";
// MUI
import { Container, Grid } from "@material-ui/core";
import { Switch, Route, useRouteMatch } from "react-router-dom";
// Components
import DayCardItem from "./DayCardItem";
import Carousel from "./Carousel";
const DayCard = (props) => {
<div
style={{
maxWidth: 1200,
marginLeft: "auto",
marginRight: "auto",
marginTop: 64,
}}
>
<Carousel show={3}>
{dailyData &&
dailyData.map((day, index) => (
<DayCardItem key={index} day={day} cardIndex={index} />
))}
</Carousel>
</div>
</Fragment>
);
};
export default DayCard;
import React, { useEffect, useState } from "react";
import moment from "moment";
import { Link, useRouteMatch } from "react-router-dom";
// MUI
import { Button, Typography } from "@material-ui/core";
import { makeStyles } from "@material-ui/core/styles";
//Redux
import { useSelector } from "react-redux";
const useStyles = makeStyles((theme) => ({
cardItem: {
backgroundColor: "#ffffff",
},
activeCardItem: {
color: "#364150",
backgroundColor: "#efefef"
},
}));
const DayCardItem = (props) => {
const { day, cardIndex } = props;
const classes = useStyles();
let [activeItem, setActiveItem] = useState(null);
const handleActiveCard = (cardId) => {
let actualCardId = activeItem;
actualCardId = cardId;
setActiveItem(actualCardId);
};
return (
<div className={`${cardIndex === activeItem && classes.activeCardItem}`}>
<Link to={`${url}/${paramUrlId}`}>
<Button
variant="contained"
color="primary"
onClick={() => handleActiveCard(cardIndex)}
>
Weather Details
</Button>
</Link>
</div>
);
};
export default DayCardItem;
【问题讨论】:
标签: reactjs material-ui