代码之家  ›  专栏  ›  技术社区  ›  Davide_sd

React-使用CSS模块将**活动**类应用于元素

  •  0
  • Davide_sd  · 技术社区  · 5 年前

    我正在潜入React,我发现管理有点问题 积极的

    假设我想开发一个组件。我想申请一份工作 积极的 类设置为当前列表项。选项卡标题由以下组件生成:

    import React, { Component } from 'react';
    import styles from './Tabs.scss';
    
    export default class TabHeader extends Component {
    
        render() {
            let activeTabIndex = this.props.activeTabIndex;
    
            return (
                <ul className={styles['tabs-header']}>
                    {
                        this.props.data.map((item, index) => {
                            return (
                                <li key={index}>
                                    <a className={(index === activeTabIndex) ? 'active' : ''} href="#">
                                        <span>{item.header}</span>
                                    </a>
                                </li>
                            )
                        })
                    }
                </ul>
            );
        }
    }
    

    积极的

    .tabs-header {
        display: table;
        width: 100%;
        list-style-type: none;
    
        & li {
            display: table-cell;
            text-align: center;
            color: #ECF0F1;
            cursor: pointer;
    
            a {
                display: block;
                padding: 15px;
                background: #212F3D;
                transition: all .2s ease-in;
                transform: skew(-40deg);
    
                &:hover {
                    background: #2471A3;
                    color: #F7F9F9;
                }
    
                & span {
                    display: block;
                    transform: skew(40deg);
                }
    
                &.active {
                    background: #2471A3;
                }
            }
        }
    }
    

    使用此设置时,活动项不使用 css代码。我怎样才能解决这个问题?

    编辑:道具 activeTabIndex (大于或等于零的整数)工作正常。如果我检查元素,我可以看到类 active 正在添加到活动项列表中,但未指向Tabs.scss中定义的类。要指出的是,当使用 className={styles['tabs-header']} ul Tabs__tabs-header__2LSPG .

    1 回复  |  直到 5 年前
        1
  •  6
  •   Ryan Cogswell    5 年前

    我需要尝试一下才能对此有信心,但我认为你应该使用 styles.active 而不是 'active’ .

        2
  •  0
  •   Alexander Kim    4 年前

    由于以下情况,您的条件将在类名中留下一个空格:

    (index === activeTabIndex) ? 'active' : ''
    

    相反,您可以进行短路评估:

    <a className={(index === activeTabIndex) && styles['active']} href="#">
      <span>{item.header}</span>
    </a>