react tab 切换 封装组件

使用类组件封装 tab切换 组件
var React=require("react");
 var ReactDOM=require("react-dom");
  class TabsControl extends React.Component{
      constructor(){
         super();
         this.state={
              currentIndex : 0
         };
     }
      check_tittle_index(index){
         return index===this.state.currentIndex ? "Tab_tittle active" : "Tab_tittle";
     }
      check_item_index(index){
         return index===this.state.currentIndex ? "Tab_item show" : "Tab_item";
     }
      render(){
         let _this=this;
         return(
             <div>
                 {/*动态生成Tab导航*/}
                 <div className="Tab_tittle_wrap">
                     { React.Children.map( this.props.children , (element,index) => {
                         return(
                             /*箭头函数没有自己的this,这里的this继承自外围作用域,即组件本身*/
                             <div
                                 onClick={ () => { this.setState({currentIndex : index}) } }
                                 className={ this.check_tittle_index(index) }
                             >
                               { element.props.name }
                             </div>
                             );
                     })
 }
                 </div>
                 {/*Tab内容区域*/}
                 <div className="Tab_item_wrap">
                     {React.Children.map(this.props.children,(element,index)=>{
                         return(
                             <div className={ this.check_item_index(index) }>{ element }</div>
                             );
                     })}
                 </div>
             </div>
             );
     } }
 class TabComponent extends React.Component{
      render(){
         return(
             <div className="container">
                 <TabsControl>
                     <div name="社会新闻">
                         社会新闻的内容
                     </div>
                     <div name="体育世界">
                         体育世界的内容
                     </div>
                     <div name="娱乐圈">
                         娱乐圈的内容
                     </div>
                 </TabsControl>
             </div>
             );
     } }
  ReactDOM.render(<TabComponent/>,document.getElementById("app"));

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值