当前位置:首页 > 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 native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…