Javascript 在三元运算符之后在className中组合文本和JS

Javascript 在三元运算符之后在className中组合文本和JS,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我在将文本和CSS样式组合为三元/条件后的类名称时遇到问题。我看过这么多不同的例子,但似乎没有任何效果 <div className={key === active ? ({ 'column ' + styles.Active}) : ('column ')} key={key}> 有人能告诉我如何正确地格式化吗?我需要列和样式。如果key==Active,则显示活动类名 提前感谢您如果您同意添加可以使用的npm包 从“classNames”导入类名; ... =======

我在将文本和CSS样式组合为三元/条件后的类名称时遇到问题。我看过这么多不同的例子,但似乎没有任何效果

<div className={key === active ? ({ 'column ' + styles.Active}) : ('column ')} key={key}>

有人能告诉我如何正确地格式化吗?我需要列和样式。如果key==Active,则显示活动类名


提前感谢您

如果您同意添加可以使用的npm包

从“classNames”导入类名;
...
=================

如果您不想添加npm包


如果您同意添加npm包,您可以使用

从“classNames”导入类名;
...
=================

如果您不想添加npm包


为了可读性,最好将其提取到变量中。不过,三元可以很容易地进行内联

字符串文本

对于那些喜欢ES6的人+

//三元
const className=`column${(key==active)?styles.active:'}`;
//或者更具可读性
const className='列';
如果(键===活动){
className+=`${style.Active}`;
}
...
串联

目前看来,字符串连接速度更快:(

//三元
常量className='column'+((键===active)?''+styles.active:'')};
//或者更具可读性
const className='列';
如果(键===活动){
className+=''+样式。活动;
}
...

为了可读性,最好将其提取到变量中。不过,三元可以很容易地内联

字符串文本

对于那些喜欢ES6的人+

//三元
const className=`column${(key==active)?styles.active:'}`;
//或者更具可读性
const className='列';
如果(键===活动){
className+=`${style.Active}`;
}
...
串联

目前看来,字符串连接速度更快:(

//三元
常量className='column'+((键===active)?''+styles.active:'')};
//或者更具可读性
const className='列';
如果(键===活动){
className+=''+样式。活动;
}
...

试试这一个。取出列,只按键操作三元

<div className={'column ' + (key === active ? styles.Active : '')} key={key}>

试试这一个。取出列,只按键操作三元

<div className={'column ' + (key === active ? styles.Active : '')} key={key}>

这是相同的解决方案,但是最好的方法

<div className={key === active ? `column ${styles.Active}` : 'column'}>

它更具可读性、自我解释性和谨慎性,这是编写代码的方式,而不是其他方式

className需要一个字符串,而您给了它一个对象{'column'+styles.Active},这是错误的

另外,我不理解您的逻辑。style.Active将是一个对象,它属于style(style-object)。如果是这样,您又做错了

<div className="column" style={key === active ? styles.Active : {}}>

这是相同的解决方案,但是最好的方法

<div className={key === active ? `column ${styles.Active}` : 'column'}>

它更具可读性、自我解释性和谨慎性,这是编写代码的方式,而不是其他方式

className需要一个字符串,而您给了它一个对象{'column'+styles.Active},这是错误的

另外,我不理解您的逻辑。style.Active将是一个对象,它属于style(style-object)。如果是这样,您又做错了

<div className="column" style={key === active ? styles.Active : {}}>

这应该行得通
这应该行得通