react中tab选项卡切换,直接上代码,简单易懂
jsx代码
javascript
/* eslint-disable react-hooks/exhaustive-deps */
import React, { useEffect, useState } from "react";
import DocumentTitle from 'react-document-title'
import styles from './styles.module.less'
// 双旦活动
const Holiday: React.FC<any> = () => {
const tabList = [
{
label:'礼物榜单',
value:0
},
{
label:'圣诞活动',
value:1
},
{
label:'元旦活动',
value:2
}
]
const [active,setactive] = useState<number>(0)
const userTop = () => {
return (
<div className={styles.userTop}>
<div>礼物榜单</div>
</div>
)
}
const christmas = () => {
return (
<div className={styles.explain}>
<div>圣诞活动</div>
</div>
)
}
const newYear = () => {
return (
<div className={styles.explain}>
元旦活动
</div>
)
}
useEffect(() => {
}, [])
return (
<DocumentTitle title='双旦活动'>
<div className={styles.Holiday}>
<div className={styles.top}>
<div className={styles.btnList} id="btnList">
{
tabList.map((item:any) => (
<div onClick={()=> setactive(item.value)}
key={item.value}
className={`${styles.normal} ${active === item.value ? styles.acitve : ''}`}>
{item.label}
</div>
))
}
</div>
</div>
<div className={styles.center}>
<div className={styles.centerBox}>
{ active === 0 ? userTop() : active === 1 ? christmas() : newYear()}
</div>
</div>
</div>
</DocumentTitle>
)
}
export default Holiday;
less代码
css
.Holiday {
width: 100%;
height: 100%;
position: relative;
display: flex;
flex-direction: column;
.top{
width: 100vw;
height: 590px;
background-size: 100%;
position: relative;
.btnList{
width: 100vw;
padding: 20px 37px;
box-sizing: border-box;
position: absolute;
bottom: 28px;
height: 120px;
display: flex;
justify-content: space-between;
bottom: 20px;
.normal{
&.acitve{
background: rgba(1, 50, 82, 1);
color: #fff;
}
width: 212px;
height: 80px;
background: rgba(1, 50, 82, 0.1);
border-radius: 40px;
font-size: 30px;
color: #333;
display: flex;
align-items: center;
justify-content: center;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
}
}
}
.center{
width: 100vw;
padding: 24px;
box-sizing: border-box;
background-size: 100%;
background-size: cover;
position: relative;
.centerBox{
width: 100%;
background: #044067;
border-radius: 20px;
box-sizing: border-box;
padding: 30px 28px;
font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #FFFFFF;
}
}
}