Javascript 在函数中使用CSS模块类,React

Javascript 在函数中使用CSS模块类,React,javascript,reactjs,Javascript,Reactjs,如何在函数中使用CSS模块类? 例如:我有类名{styles.item},但我想在函数中使用它,例如 export default function MenuItem { if(props.type == "extra"){ {styles.item}.classList.add("extra"); } return ( <MenuItem name="test product" type="extra&q

如何在函数中使用CSS模块类? 例如:我有类名
{styles.item}
,但我想在函数中使用它,例如

export default function MenuItem {
if(props.type == "extra"){
   {styles.item}.classList.add("extra");
}
return (
    <MenuItem name="test product" type="extra" />
);
}
导出默认函数菜单项{
如果(props.type==“额外”){
{styles.item}.classList.add(“额外”);
}
返回(
);
}
我试着像使用
样式一样使用它,使用
{}
${}

因此,我想做的是,如果有一种类型的“extra”,那么我想添加一个虚线边框。


   <div className={`anyClass ${props.type==='extra' ? 'extra' : null}`}/>

您可以安装此页面并在react应用程序中使用它

npm安装类名
添加类名

Css

.success {
  color: green;
}
.error {
  color: red;
}
JS

import styles from './alert.module.css'
import cn from 'classnames'

export default function Alert({ children, type }) {
  return (
    <div
      className={cn({
        [styles.success]: type === 'success',
        [styles.error]: type === 'error'
      })}
    >
      {children}
    </div>
  )
}
从“./alert.module.css”导入样式
从“classnames”导入cn
导出默认函数警报({children,type}){
返回(
{儿童}
)
}

您可以安装此页面并在react应用程序中使用它

npm安装类名
添加类名

Css

.success {
  color: green;
}
.error {
  color: red;
}
JS

import styles from './alert.module.css'
import cn from 'classnames'

export default function Alert({ children, type }) {
  return (
    <div
      className={cn({
        [styles.success]: type === 'success',
        [styles.error]: type === 'error'
      })}
    >
      {children}
    </div>
  )
}
从“./alert.module.css”导入样式
从“classnames”导入cn
导出默认函数警报({children,type}){
返回(
{儿童}
)
}

样式。项
是字符串(类名)

不清楚您试图对
{styles.item}.classList.add(…)
执行什么操作

如果您想进一步区分“extra”和“item”,您应该向样式表中添加一个额外的类,并传递它们:

<MenuItem className={`${styles.item} ${styles.extra}`} />

style.item
是一个字符串(类名)

不清楚您试图对
{styles.item}.classList.add(…)
执行什么操作

如果您想进一步区分“extra”和“item”,您应该向样式表中添加一个额外的类,并传递它们:

<MenuItem className={`${styles.item} ${styles.extra}`} />

假设您具有以下功能:

const getStyleClass = () => 
   if (condition){
      return "one"
   } else {
      return "two
   } 
您可以这样使用函数:

    <MenuItem name="test product" type="extra"  className = {() => {getStyleClass()}}/>
{getStyleClass()}}/>

但是请记住,该函数将被调用一次,动态更新css类将需要更多的工作

假设您有以下函数:

const getStyleClass = () => 
   if (condition){
      return "one"
   } else {
      return "two
   } 
您可以这样使用函数:

    <MenuItem name="test product" type="extra"  className = {() => {getStyleClass()}}/>
{getStyleClass()}}/>

但是请记住,函数将被调用一次,动态更新css类将需要更多的工作

那么如何在函数中使用它呢?我已经更新了主帖,在需要这个条件类列表的组件中包含了更多的代码。这在功能上是行不通的,这里的一点解释(或者,至少是一个简短的评论)会改进这个答案。(我在低质量帖子评论队列中遇到了它。)那么我如何在函数中使用它呢?我已经更新了主帖,在需要这个条件类列表的组件中包含了更多的代码。这在功能上是行不通的,这里的一点解释(或者,至少是一个简短的评论)会改进这个答案。(我在低质量帖子评论队列中遇到了它。)嘿,ray,我试着用onclick函数实现它,实际上是一次单击就改变了类。虽然在dom中它反映了变化,但是css没有被应用。html中的类已更新,但与添加的类相对应的css样式未应用。不能说没有看到它,但听起来可能是1)css选择器未应用于您试图针对的元素,或者2)您试图覆盖的现有规则具有优先级,因此它们优先于您的新规则。虽然在dom中它反映了变化,但是css没有被应用。html中的类已更新,但与添加的类相对应的css样式未应用。不能说没有看到它,但听起来可能是1)css选择器未应用于您尝试目标的元素,或者2)您尝试覆盖的现有规则具有相同的优先级,因此它们优先于您的新规则。