【发布时间】:2023-03-02 21:22:01
【问题描述】:
你能帮我做造型吗?我有这些按钮,但一次只能变成蓝色(焦点),不能同时变成几个
我的组件是这样的...
import { Container, Content } from './styles';
function PressedButton({ children, ...rest }) {
const [pressed, setPressed] = useState(false);
return (
<Container>
<Content
type="button" {...rest}
pressed={pressed}
onFocus={() => setPressed(!pressed)}
>
{children}
</Content>
</Container>
);
}
PressedButton 的样式...
import styled from 'styled-components';
(...)
export const Content = styled.button`
(...)
//props
background: ${({ pressed }) => pressed ? `linear-gradient(#449fd8, #1b699a)`: '#2a2a2a'};
color: ${({ pressed }) => pressed ? '#fff': '#7d7d7d'};
在父级中是这样渲染的......
tags.forEach((tag) => {
let saida = <PressedButton onClick={() => handleTag(tag)}>{tag}</PressedButton>
【问题讨论】:
-
您可以编辑您的答案以显示父组件的代码吗?最有可能的是,您需要将状态提升到您的父组件(呈现
PressedButton组件的组件,以确保一次只有一个焦点。 -
我编辑了我的问题!
-
一会儿,我正在发一个帖子,应该可以帮助到你
标签: javascript css reactjs styles styled-components