我正在尝试使用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
,我希望在这里得到一些帮助。。。
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>);
);