React基础-实现简单tab切换

2020-01-08  本文已影响0人  码枫云

通过改变this.state中的值判断是否为当前节点并且添加类名实现tab切换

import React, { Component } from 'react'
import './demo.css'
//实现简单tab切换
export default class app7 extends Component {
    constructor(props){
        super(props)
        this.state={
            num:1
        }
    }
    change(mynum){
        this.setState({
            num:mynum
        })
    }
    render() {
        return (
            <div>
                <div className="tab">
                    <ul className="tab_top">
                   {/*   使用箭头函数通过传值到change函数,从而更新this.state里的值来进行判断是否添加类名 当有show类名的时候该li背景颜色高亮*/} 
                        <li className={this.state.num===1?'show':''} onClick={()=>this.change(1)}>生活</li>
                        <li className={this.state.num===2?'show':''} onClick={()=>this.change(2)}>科技</li>
                        <li className={this.state.num===3?'show':''} onClick={()=>this.change(3)}>军事</li>

                        {/* 通过bind(this,需要传的值)传值到change函数,从而更新this.state里的值来进行判断是否添加类名 当有show类名的时候该li背景颜色高亮*/}
                        {/* <li className={this.state.num===1?'show':''} onClick={this.change.bind(this,1)}>生活</li>
                        <li className={this.state.num===2?'show':''} onClick={this.change.bind(this,2)}>科技</li>
                        <li className={this.state.num===3?'show':''} onClick={this.change.bind(this,3)}>军事</li> */}
                    </ul>
                    <ol  className="tab_down">
                        <li className={this.state.num===1?'show':''}>生活</li>{/* 通过更新this.state里的值来进行判断是否添加类名 ,当有show类名的时候该li display:block*/}
                        <li className={this.state.num===2?'show':''}>科技</li>
                        <li className={this.state.num===3?'show':''}>军事</li>
                    </ol>
                </div>
            </div>
        )
    }
}


css

*{
    margin: 0;
    padding: 0;
    list-style: none;
}
.tab{
    width: 500px;
    height: 300px;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
    background-color: tan;
}
.tab_down{
    height: 240px;
}
.tab_down li{
    height: 240px;
    background-color: greenyellow;
    display: none;
}
.tab_down li.show{
    display: block;
}
.tab_top{
    height: 60px;
}
.tab_top li{
    height: 60px;
    width: 30%;
    background-color: gray;
    float: left;
    margin-right: 10px;
}
.tab_top li.show{
    background-color: greenyellow;
}
上一篇下一篇

猜你喜欢

热点阅读