简体   繁体   English

在ReactJs中将className添加到奇数和偶数元素

[英]Adding classNames to odd and even elements in ReactJs

I am trying to add the className "direction-r" to the divs in the "timeline" list that are even and className "direction-l" to every other item (odd). 我正在尝试将className“ direction-r”添加到偶数“ timeline”列表中的div,并将className“ direction-l”添加到其他所有项(奇数)。 I know how it can be achieved using JQuery but not sure how to get it done using ReactJs. 我知道如何使用JQuery实现它,但不确定如何使用ReactJs完成它。 I am quite new to ReactJS and using it for the first time on a large project. 我对ReactJS并不陌生,并在大型项目中首次使用它。 Below is my code: 下面是我的代码:

class MainTimeline extends React.Component {

  render() {

    return (
      <div className="timeline-container">
        <h3>Timeline</h3>
        <ul className="timeline">
          <li>
            <div className="direction-r">
              <div className="title-wrapper">
                <span className="title professional">
                  Declared bankrupcy
                </span>
                <span className="time-wrapper"><span class="time">2015 - present</span></span>
              </div>
              <div className="detail">
                <p className="place">Corporation</p>
              </div>
            </div>
          </li>
          <li>
            <div className="direction-l">
              <div className="title-wrapper">
                <span className="title academic">
                  Declared bankrupcy
                </span>
                <span className="time-wrapper"><span class="time">2015 - present</span></span>
              </div>
              <div className="detail">
                <p className="place">Corporation</p>
              </div>
            </div>
          </li>
        </ul>
      </div>
    );
  }

}

Thanks 谢谢

Instead of modifying the DOM, React allows you to define rendering logic inside the render method before the DOM is created: 无需修改DOM,React允许您在创建DOM之前在render方法内定义渲染逻辑:

var listItems
for( var i=0; i<4; i++) {
  listItems.push(
      <li key={i}>
        <div className={'direction-'+(i%2 ? 'r':'l')}>
          <div className="title-wrapper">
            <span className="title professional">
              Declared bankrupcy
            </span>
            <span className="time-wrapper"><span class="time">2015 - present</span></span>
          </div>
          <div className="detail">
            <p className="place">Corporation</p>
          </div>
        </div>
      </li>
  )
}

return (
  <div className="timeline-container">
    <h3>Timeline</h3>
    <ul className="timeline">
      {listItems}
    </ul>
  </div>
)

This should work. 这应该工作。

    class MainTimeline extends React.Component {

        render() {
            var isEven = (your even odd logic);
            var directionClass = isEven ? 'direction-r' : 'direction-l';
            return (
                <div className="timeline-container">
                    <h3>Timeline</h3>
                    <ul className="timeline">
                        <li>
                            <div className={directionClass}>
                                <div className="title-wrapper">
                                    <span className="title professional">
                                        Declared bankrupcy
                                    </span>
                                    <span className="time-wrapper"><span class="time">2015 - present</span></span>
                                </div>
                                <div className="detail">
                                    <p className="place">Corporation</p>
                                </div>
                            </div>
                        </li>
                    </ul>
                </div>
            );
        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM