You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中点击content_bar选项切换display-page区域组件的实现咨询

你现有的代码逻辑已经可以实现点击Transactions切换对应组件的需求,若要适配全部4个选项、提升可维护性,可按如下方案优化:

优化思路

  • 不直接在state中存储组件实例,改为存储当前激活的tab标识,降低state复杂度
  • 封装统一的tab切换方法,不用为每个选项单独编写点击回调
  • 根据当前激活的tab标识动态渲染对应组件

优化后完整代码

import React, { Component } from 'react';
import './Data.css';
import Transactions from './Transactions';
import Send from './Send';
// 后续新增组件直接在此引入即可
import Friends from './Friends';
import Professional from './Professional';

class Data extends Component {
    constructor(props) {
        super(props);
        this.state = {
            // 初始默认激活send tab
            activeTab: 'send'
        }
    }

    // 统一切换tab的方法
    switchTab = (tabName) => {
        this.setState({ activeTab: tabName });
    }

    render() {
        // 根据activeTab渲染对应组件
        const renderContent = () => {
            switch(this.state.activeTab) {
                case 'send':
                    return <Send />
                case 'transactions':
                    return <Transactions />
                case 'friends':
                    return <Friends />
                case 'professional':
                    return <Professional />
                default:
                    return <Send />
            }
        }

        return(
            <div className="content">
                <div className="content_bar">
                    <h5 onClick={() => this.switchTab('send')}>Send</h5>
                    <h5 onClick={() => this.switchTab('transactions')}>Transactions</h5>
                    <h5 onClick={() => this.switchTab('friends')}>Friends</h5>
                    <h5 onClick={() => this.switchTab('professional')}>Professional</h5>
                </div>
                <div className="display-page">
                  {renderContent()}
                </div>
            </div>
        );
    }
}

export default Data;

扩展说明

如果后续需要支持刷新页面保留当前tab状态,可以将activeTab的值存在本地存储中;如果需要支持路由跳转定位到对应tab,也可以结合react-router的查询参数做同步,不需要改动现有核心切换逻辑。

内容的提问来源于stack exchange,提问作者thomas305

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:48:05