组件化开发-01.01-Tab案例重构

Tab案例重构

  • 基于组件化方式重构
function Tab (props) {
  let btns = [];
  let divs = [];
  props.tabData && props.tabData.forEach(item => {
    // 产生btn列表
    btns.push(<button className={props.currentId===item.id?'active': ''} key={item.id}>{item.title}</button>)
    // 产生div列表
    divs.push(<div className={props.currentId===item.id?'active': ''} key={item.id}>{item.content}</div>)
  })
  return (
    <div className='tab'>
      {btns}
      {divs}
    </div>
  )
}
<Tab tabData={tabData} currentId={1}/>
实例-重构Tab案例

第一步:src下新建文件夹components,下面新建02.js

/*
  重构Tab案例
*/
import React from 'react'
import '../Tab.css'

// Tab函数组件
function Tab (props) {
  // let tabData = [{
  //   id: 1,
  //   title: '浪潮之巅',
  //   desc: 'IT巨头的兴衰史'
  // }, {
  //   id: 2,
  //   title: '数学之美',
  //   desc: '数学的应用场景'
  // }, {
  //   id: 3,
  //   title: '智能时代',
  //   desc: '新兴的技术潮流'
  // }]
  // let currentId = 1
  let titles = []
  let descs = []
  props.tabData.forEach(item => {
    titles.push(<button className={props.currentId===item.id?'active':''} key={item.id}>{item.title}</button>)
    descs.push(<div className={props.currentId===item.id?'desc active': 'desc'} key={item.id}>{item.desc}</div>)
  })
  let tab = (
    <div className="tab">
      <div className="title">
        {titles}
      </div>
      {descs}
    </div>
  )
  return tab
}

export default Tab

第二步:App.js进行引入

import React from 'react';
import './App.css';
// import Parent from './component/01.js'
import Tab from './component/02-重构Tab案例'

function App () {
  let tabData = [{
    id: 1,
    title: '浪潮之巅',
    desc: 'IT巨头的兴衰史'
  }, {
    id: 2,
    title: '数学之美',
    desc: '数学的应用场景'
  }, {
    id: 3,
    title: '智能时代',
    desc: '新兴的技术潮流'
  }, {
    id: 4,
    title: 'JavaScript高程',
    desc: '系统的讲解了JavaScript语法'
  }]
  return (
    <div>
      {/*<Parent/>*/}
      <Tab tabData={tabData} currentId={4}/>
    </div>
  )
}

export default App;

npm run start启动项目,显示界面

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值