【发布时间】:2021-11-03 13:33:48
【问题描述】:
我正在将数据映射到卡片中,卡片的onClick,它表明它通过背景颜色更改和输入框被选中而处于活动状态。这是我的代码。 我正在将数据映射到卡片中,所以我正在渲染卡片列表。 onClick 卡,它通过更改背景颜色和检查输入框显示它处于活动状态。当我单击它时它被选中,但是当它导航到每个 id 的新路线时,它被取消选中。这是卡片组件的代码。
import React, { useState } from "react";
import { useHistory } from "react-router";
import styled from "styled-components";
export default function Card(props) {
const {item,id} = props;
const [checked, setChecked] = useState(false);
const [background, setBackground] = useState("#F3F1FA");
const [cardBorder, setCardBorder] = useState("transparent");
const history = useHistory();
const CheckBox = () => {
setChecked(!checked);
if (checked === true) {
setBackground("#F3F1FA");
setCardBorder("transparent");
} else {
setBackground("#fff");
setCardBorder("2px solid #7f67ce");
}
};
return (
<CardWrapper
onClick={()=>{
CheckBox();
// console.log(props.id)
history.push(`/invoice/${id}`)
}}
background={background}
cardBorder={cardBorder}
>
<div> Content </div>
<Check>
<input
type="checkbox"
checked={checked}
value={checked}
onChange={() => CheckBox}
/>
</Check>
</CardWrapper>
);
}
const CardWrapper = styled.button`
background-color: ${(props) => props.background};
border: ${(props) => props.cardBorder};
display: flex;
align-items: center;
justify-content: space-between;
width: 347px;
height: 129px;
border-radius: 16px;
color: #7f67ce;
padding-left: 25px;
padding-right: 25px;
text-align: left;
margin-top:10px;
margin-bottom:10px;
img {
padding-bottom: 15px;
}
@media(max-width:1200px){
width:300px;
}
@media(max-width:1200px){
width:280px;
}
:first-child{
margin-top:0px;
}
`;
【问题讨论】:
标签: javascript arrays reactjs react-router styled-components