当前位置:首页 > React

react 实现选项卡

2026-01-27 10:14:53React

实现选项卡的基本结构

使用 React 的 useState 管理当前选中的选项卡索引,并通过条件渲染切换内容。

react 实现选项卡

import React, { useState } from 'react';

const TabComponent = () => {
  const [activeTab, setActiveTab] = useState(0);
  const tabs = ['Tab 1', 'Tab 2', 'Tab 3'];
  const contents = [
    <div>Content for Tab 1</div>,
    <div>Content for Tab 2</div>,
    <div>Content for Tab 3</div>
  ];

  return (
    <div>
      <div style={{ display: 'flex' }}>
        {tabs.map((tab, index) => (
          <button
            key={index}
            onClick={() => setActiveTab(index)}
            style={{
              padding: '10px',
              background: activeTab === index ? 'lightblue' : 'white',
              border: '1px solid gray'
            }}
          >
            {tab}
          </button>
        ))}
      </div>
      <div style={{ padding: '20px', border: '1px solid gray' }}>
        {contents[activeTab]}
      </div>
    </div>
  );
};

export default TabComponent;

封装可复用的选项卡组件

将选项卡逻辑抽象为独立组件,提高复用性。

react 实现选项卡

import React, { useState } from 'react';

const Tabs = ({ tabs, defaultIndex = 0, children }) => {
  const [activeTab, setActiveTab] = useState(defaultIndex);

  return (
    <div>
      <div style={{ display: 'flex' }}>
        {tabs.map((tab, index) => (
          <button
            key={index}
            onClick={() => setActiveTab(index)}
            style={{
              padding: '10px',
              background: activeTab === index ? 'lightblue' : 'white',
              border: '1px solid gray'
            }}
          >
            {tab}
          </button>
        ))}
      </div>
      <div style={{ padding: '20px', border: '1px solid gray' }}>
        {children[activeTab]}
      </div>
    </div>
  );
};

// 使用示例
const App = () => (
  <Tabs tabs={['Tab A', 'Tab B']}>
    <div>Content A</div>
    <div>Content B</div>
  </Tabs>
);

添加动画效果

通过 CSS 或动画库(如 framer-motion)实现平滑切换效果。

import { motion, AnimatePresence } from 'framer-motion';

const AnimatedTabContent = ({ activeTab, contents }) => (
  <AnimatePresence mode="wait">
    <motion.div
      key={activeTab}
      initial={{ opacity: 0 }}
      animate={{ opacity: 1 }}
      exit={{ opacity: 0 }}
      transition={{ duration: 0.3 }}
    >
      {contents[activeTab]}
    </motion.div>
  </AnimatePresence>
);

响应式设计优化

使用 CSS 媒体查询或 Flexbox/Grid 布局适配不同屏幕尺寸。

/* 示例 CSS */
.tab-container {
  display: flex;
  flex-wrap: wrap;
}

.tab-button {
  flex: 1;
  min-width: 100px;
}

@media (max-width: 600px) {
  .tab-button {
    flex: 100%;
  }
}

标签: 选项卡react
分享给朋友:

相关文章

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react native如何

react native如何

React Native 基础知识 React Native 是一个由 Facebook 开发的框架,用于使用 JavaScript 和 React 构建跨平台移动应用。它允许开发者编写一次代码,同时…

react如何重写alert

react如何重写alert

重写 React 中的 alert 方法 在 React 中,直接使用原生 alert 会破坏用户体验,通常需要自定义弹窗组件替代。以下是实现方法: 使用自定义弹窗组件 创建可复用的弹窗组件,替代原…

react如何代码优化

react如何代码优化

减少不必要的重新渲染 使用 React.memo 包装函数组件以避免在 props 未变化时重新渲染。对于类组件,可以通过 shouldComponentUpdate 或继承 PureComponen…