javascript - 相同的选项卡内容显示两次

标签 javascript html css reactjs redux

我已经实现了一个简单的标签代码。我正在尝试将标签容器移动到我的 li 标签中,因为这是一项新要求。更改代码后,相同的选项卡内容显示两次。

  _renderTitles: function () {
    function labels(child, index) {
        var activeClass = (this.state.selected === index ? 'active' : '');

        return (
        <li role="presentation" key={index} className={child.props.liClass}>
            <a href="#" 
            className={`sports-tab-header ${activeClass}`}
            onClick={this.handleClick.bind(this, index)}>
            <h2>{child.props.label}</h2>
            <p className="sports-subtitle">{child.props.subtitle}</p>
          </a>
        </li>
      );
    }
    return (
        <ul className="tabs__labels">
        {this.props.children.map(labels.bind(this))}
      </ul>
    );
  },

最佳答案

由于这一行,内容在两个地方都显示了:

<div className="tabs__content">
  {this.props.children[this.state.selected]}
</div>

props.children 属性包含两个子项,因此您选择只显示选定的内容。这是正确的,只是由于 map,您要为每个 child 执行此操作:

<ul className="tabs__labels">
  {this.props.children.map(labels.bind(this))}
</ul>

最有效的解决方案是使用与 this.state.selected === index 相同的检查,通过设置内容 only 如果它是所选内容:

var isActive = this.state.selected === index;
var activeClass = (isActive ? 'active' : '');
// Only set the content if active 
var content = isActive ? this.props.children[this.state.selected] : null;
...

// Show the content, which will be null if not active tab
<div className="tabs__content">
  {content}
</div>

参见 updated JSFiddle .

关于javascript - 相同的选项卡内容显示两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498339/

相关文章:

javascript - 三个js物体绕球体旋转

javascript - 通过key进行区分,然后得到key以外字段的结果

javascript - 正在读回 HTML 输入日期 "incorrectly"

javascript - Angular Material md-slider : Vertical Slider will not work in md-sidenav

javascript - Bower 不安装组件

javascript - Vue.js 递归菜单问题

jquery - 无表表单设计的好文章

html - 将一组包裹的 flex 元素居中

php - CSS 文件未在 Codeigniter 中加载

CSS高度自动没有高度