React中tab栏的实现

父组件的代码展示

复制代码
class App extends React.Component{
    constructor(props){
        super(props);
        this.state={
            name:['流行','新款','精选'],   //这些数据为tab栏展示的数据
            currentTitle:'流行'
        }
    }
    render(){
        const {name,currentTitle} =this.state   //通过解构,下面直接拿到数据
        return(
            <div>
                <CurrentBar itemClick={index=>this.itemClick(index)} titles={name}/>   //子组件
            </div>
        )
    }
    itemClick(index){        //子组件给父组件传递事件
        const {name} = this.state
        const titles = name;
        console.log(index);
        this.setState({
            currentTitle:titles[index]
        })
    }
}
export default App;
复制代码

子组件的代码展示

复制代码
export default class CurrentBar extends Component {
    constructor(props){
        super(props);
        this.state={
            currentIndex:0
        }
    }
    render() {
        const {titles} = this.props;     //从父组件拿到数据,
        const {currentIndex} = this.state
        return (
            <div className='current-tab'>
                {
                    titles.map((item,index)=>{    //然后进行遍历
                        return (
                            <div key={item} 
                                className={"currnet-item " + (index === currentIndex?"active":"")} 
                                onClick={e=>this.itemClick(index)}
                            >
                                <span className='current-span'>{item}</span>  //每个span为一个数据展示
                            </div>
                        )
                    })
                }
            </div>
        )
    }
    itemClick(index){
        this.setState({
            currentIndex:index
        })

        const {itemClick} = this.props;   //从父组件拿到事件
        itemClick(index);
    }
}
复制代码

效果展示

 

posted @   无何不可88  阅读(388)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示