、あなたはすでにこれを実行するために必要なすべてのコードを持っています。
var isActive = this.state.selected === index;
この行には、タブがアクティブかどうかを確認するための行があります。あなたは、その値に基づいてコンテキストを設定するコードの行に次を使用します。
var activeClass = (isActive ? 'active' : '');
var content = isActive ? this.props.children[this.state.selected] : null;
あなたがcontent
とactiveClass
でやったものと同様のものを適用することができます。それらの実装方法を見てみましょう。クラス名の変更は、この行がで処理される方法と同じになります
var newContent = <span>Hello</span>;
var pContent = isActive ? newContent : child.props.subtitle;
...
// Use the pContent variable instead of child.props.subtitle
<p className="sports-subtitle">{pContent}</p>
Updated JSFiddle
:
return (
<li role="presentation" key={index} className={child.props.liClass}>
<a href="#"
className={`sports-tab-header ${activeClass}`} // <== Adds active class
onClick={this.handleClick.bind(this, index)}>
<h2>{child.props.label}</h2>
<p className="sports-subtitle">{child.props.subtitle}</p>
</a>
<div className="tabs__content">
{content} // <== Adds content only if active
</div>
</li>
);
ので<p>
タグの内容を変更すると、ほんの少しの変化だろうactiveClass
:
....
className={`sports-tab-header ${activeClass}`}
このsh ouldは簡単に扱うことができます。
作成したコンポーネント全体を提供できますか? –
JavaScriptの変数名にはハイフンを使用できません。 (例えば、 "first-tab"は "firstTab"と読みます) –
@BenHare私のフィドルはコンポーネント全体を持っています... jsで変更した後...このクラスに新しいスタイルを追加します.sports-changed-status –