【发布时间】:2020-08-20 05:27:55
【问题描述】:
我有一个 React 组件,我在其中根据 Tabs 组件中子元素的数量生成选项卡。
我为选项卡的基本样式以及 :focus 样式设置了 CSS,但是当组件加载时,我试图将相同的样式从 :focus 应用到 :active 类,以便加载菜单时的默认选项卡显示为活动选项卡,但无论出于何种原因,只是将样式传递给 :active 类不适用于我的样式化组件。
现在,当菜单加载时,选项卡在标准样式中显示为非活动状态。
我的标签组件:
import React, { useState } from 'react';
import styled from 'styled-components';
type Props = {
children: React.ReactNode;
};
const Tabs = (props: Props) => {
const { children } = props;
const [tab, setTab] = useState(0);
const childrenList = React.Children.toArray(children);
const tabs = childrenList.map((child, idx) => {
const title = (child as any).props.title ?? idx;
return (
<StyledTabs key={title} onClick={() => setTab(idx)}>
{title}
</StyledTabs>
);
});
const current = childrenList[tab];
return (
<div>
<div>{tabs}</div>
<div>{current}</div>
</div>
);
};
export default Tabs;
const StyledTabs = styled.button`
margin: 0 10px;
padding: 0 10px;
padding-bottom: 5px;
border: none;
background: transparent;
display: inline-block;
font-weight: 700;
text-transform: uppercase;
:focus {
color: #1471da;
border-bottom: 1px solid #1471da;
outline: none;
padding-bottom: 5px;
}
/* These Styles don't work */
:active {
color: #1471da;
border-bottom: 1px solid #1471da;
outline: none;
padding-bottom: 5px;
}
`;
【问题讨论】:
标签: javascript css reactjs typescript