React でクラス属性を条件付きで適用する 質問する

React でクラス属性を条件付きで適用する 質問する

親コンポーネントから渡される内容に応じて、このボタン グループを条件付きで表示または非表示にしたいのですが、次のようになります。

    <TopicNav showBulkActions={this.__hasMultipleSelected} />

    __hasMultipleSelected: function() {
      return false; //return true or false depending on data
    }
    var TopicNav = React.createClass({
    render: function() {
    return (
        <div className="row">
            <div className="col-lg-6">
                <div className="btn-group pull-right {this.props.showBulkActions ? 'show' : 'hidden'}">
                    <button type="button" className="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                      Bulk Actions <span className="caret"></span>
                    </button>
                    <ul className="dropdown-menu" role="menu">
                      <li><a href="#">Merge into New Session</a></li>
                      <li><a href="#">Add to Existing Session</a></li>
                      <li className="divider"></li>
                      <li><a href="#">Delete</a></li>
                    </ul>
                </div>
            </div>
        </div>
        );
      }
    });

しかし、 では何も起こりません。{this.props.showBulkActions ? 'show' : 'hidden'}何か間違ったことをしているのでしょうか?

ベストアンサー1

中括弧は文字列の内側にあるため、文字列として評価されます。中括弧は外側にある必要があるため、次のように記述すると機能します。

<div className={"btn-group pull-right " + (this.props.showBulkActions ? 'show' : 'hidden')}>

「pull-right」の後のスペースに注意してください。誤って「pull-right show」クラスではなく「pull-rightshow」クラスを指定しないようにする必要があります。また、括弧も必要です。

おすすめ記事