我是ReactJS和JSX的新手,我对下面的代码有一点问题.

我try 将多个类添加到每个liclassName属性中:

<li key={index} className={activeClass, data.class, "main-class"}></li>

我的react 部分是:

var AccountMainMenu = React.createClass({
  getInitialState: function() {
    return { focused: 0 };
  },

  clicked: function(index) {
    this.setState({ focused: index });
  },

  render: function() {
    var self = this;
    var accountMenuData = [
      {
        name: "My Account",
        icon: "icon-account"
      },
      {
        name: "Messages",
        icon: "icon-message"
      },
      {
        name: "Settings",
        icon: "icon-settings"
      }
    /*{
        name:"Help &amp; Support &nbsp; <span class='font-awesome icon-support'></span>(888) 664.6261",
        listClass:"no-mobile last help-support last"
      }*/
    ];

    return (
      <div className="acc-header-wrapper clearfix">
        <ul className="acc-btns-container">
          {accountMenuData.map(function(data, index) {
            var activeClass = "";

            if (self.state.focused == index) {
              activeClass = "active";
            }

            return (
              <li
                key={index}
                className={activeClass}
                onClick={self.clicked.bind(self, index)}
              >
                <a href="#" className={data.icon}>
                  {data.name}
                </a>
              </li>
            );
          })}
        </ul>
      </div>
    );
  }
});

ReactDOM.render(<AccountMainMenu />, document.getElementById("app-container"));

推荐答案

当决定(不)使用的类需要相当多的逻辑时,我使用classnames.overly simple example:

...
    var liClasses = classNames({
      'main-class': true,
      'activeClass': self.state.focused === index
    });

    return (<li className={liClasses}>{data.name}</li>);
...

也就是说,如果您不想包含依赖项,那么下面有更好的答案.

Javascript相关问答推荐

用户单击仅在JavaScript中传递一次以及其他行为

在具有焦点和上下文的d3多线图表中,如何将上下文的刷新限制在特定日期?

reaction useEffect KeyDown for each 条目配音输出

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

使用复选框在d3.js多折线图中添加或删除线条

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

在grafana情节,避免冲突的情节和传说

处理时间和字符串时MySQL表中显示的日期无效

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

为什么客户端没有收到来自服务器的响应消息?

如何在Bootstrap中减少网格系统中单个div的宽度

变量在导入到Vite中的另一个js文件时成为常量.

一个实体一刀VS每个实体多刀S

如何用javascript更改元素的宽度和高度?

基于产品ID更新条带产品图像的JavaScript命中错误

Phaser3 preFX addGlow不支持zoom

顶点图使用组标签更新列之间的条宽

在ChartJS中使用spanGaps时,是否获取空值的坐标?

如何使用fltter_js将对象作为参数传递给javascrip?