提问者:小点点

如何用Reactjs呈现带有classNames的条件


我正在尝试使用classnames替换一行中的下面条件。

我的问题是,由于div等,我不确定写代码的正确方式是什么。

我有以下代码:

const { pageTitle, removeTitle = false } = props;   # destructuring

let result;

if(removeTitle){
  result = <div className="header-without-title">{pageTitle}</div>;
} else {
  result = <div className="header-with-title">{pageTitle}</div>;
}

return (<div className="result-title">{result});

};

如果div不存在,我可以编写如下内容。。。

const result = classNames({"header-without-title": removeTitle, "header-title": !removeTitle});

但是我现在不确定我是否有div,我希望在这里得到一些帮助。。。


共2个答案

匿名用户

return (
    <div className="result-title">
        <div className={`header-${removeTitle ? 'without-title' : 'with-title'}`}>{pageTitle}</div>
    </div>
);

或者使用https://github.com/jedwatson/classnames

return (
    <div className="result-title">
        <div className={classNames({ 'header-without-title': removeTitle, 'header-with-title': !removeTitle })}>
            {pageTitle}
        </div>
    </div>
);

编辑:JSX之外的解决方案

const result = (
    <div className={classNames({ 'header-without-title': removeTitle, 'header-with-title': !removeTitle })}>
        {pageTitle}
    </div>
);

return (
    <div className="result-title">
        {result}
    </div>
);

匿名用户

您可以只内联classNames函数

const { pageTitle, removeTitle = false } = props;

const result = classNames({"header-without-title": removeTitle, "header-title": !removeTitle});

return (
  <div className="result-title">
    <div className={result}>
      {pageTitle}
    </div>
  </div>);
);