【问题标题】:How to put function in React className field?如何在 React className 字段中添加函数?
【发布时间】:2021-04-09 13:15:25
【问题描述】:

我有这样的东西:

const [valueA, setValA] = useState(1)
const [valueB, setValB] = useState(1)


const classHandler = (val) => {

    if (val<2) {
        return 'styles.redButt'
    } else if (val===2) {
        return 'styles.normalButt'
    } else if (val===5) {
        return 'styles.greenButt'
    } else {
        return 'styles.noneButt'
    }
}

return (<>
    <div className={classHandler(valueA), styles.buttonize}>
        FIRST INFO {valueA}
    </div>
    <div className={classHandler(valueB), styles.buttonize}>
        SECOND INFO {valueB}
    </div>

</>)

功能不起作用,但没有错误,第二类 {styles.buttonize} 工作正常! 我错过了什么?

【问题讨论】:

    标签: reactjs styles classname


    【解决方案1】:

    comma operator (,) 计算其每个操作数(从左到右)并返回最后一个操作数的值。在您的情况下,classHandler(valueA) 被评估,但 className 将等于 styles.buttonize (最后一个操作数)。

    如果您使用css modules,则此return 'styles.redButt' 将不起作用,请改用return styles.redButt

    const classHandler = (val) => {
      if (val<2) {
            return styles.redButt
        } else if (val===2) {
            return styles.normalButt
        } else if (val===5) {
            return styles.greenButt
        } else {
            return styles.noneButt
        }
    }
    <div className={`${classHandler(valueA)} ${styles.buttonize}`}>
            FIRST INFO {valueA}
    </div>
    

    【讨论】:

    • 是的!谢谢!我知道我很接近......但没有你的帮助...... ;-)
    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多