【发布时间】:2021-09-22 03:00:00
【问题描述】:
我有一个卡片组件 TemplateList 用于映射我的模板卡片(我通过数组添加它们)。
我想添加一个 onClick 状态挂钩功能,帮助我在点击时选择一张或多张卡片,我该怎么做?
这是我的 TemplateList 组件:
import TemplateCard from
import styles from "./styles/actionpage.m.css";
export type Template = {
title: string;
description: string;
imgURL: string;
};
type Props = {
templates: Template[];
};
const TemplateList = ({ templates }: Props) => {
return (
<div className={styles.scrollContainer}>
{templates.map((item) => (
<TemplateCard
title={item.title}
description={item.description}
img={item.imgURL}
classNameToAdd={styles.cardContainer}
/>
))}
</div>
);
};
export default TemplateList;
这是我的 TemplateCard 组件:
import React from "react";
import styles from "./styles/cards.m.css";
type Props = {
title: string;
description: string;
img: string;
classNameToAdd?: string;
selected?: boolean;
classNameOnSelected?: string;
};
const TemplateCard = ({
title,
description,
img,
classNameToAdd,
classNameOnSelected,
selected,
}: Props) => {
const { aspectRatio, vmin } = useWindowResponsiveValues();
let className = `${styles.card} ${classNameToAdd}`;
if (selected) {
className += `${styles.card} ${classNameToAdd} ${classNameOnSelected}`;
}
return (
<div style={card} className={className}>
<img style={imageSize} src={img}></img>
<div style={cardTitle}>{title}</div>
<div style={descriptionCard}>{description}</div>
</div>
);
};
TemplateCard.defaultProps = {
classNameOnSelected: styles.selected,
};
export default TemplateCard;
目前,我添加了一个“已选择”道具,在为真时为我的卡片提供边框,但这当然会在为真时选择所有卡片。
这就是我的卡片在被选中时的样子。
【问题讨论】:
标签: javascript reactjs typescript react-hooks state