【问题标题】:How to prevent to add Null to className in if-statement如何防止在 if 语句中将 Null 添加到 className
【发布时间】:2018-11-17 15:22:57
【问题描述】:

我创建了 ReactJS 应用程序,我想在其中标记每个配置文件的最大(绿色)和最小(红色)技能值。
每个带值的跨度都有一个初始类“技能值”。
当我定义最大值和最小值时,我为具有最大值和最小值的跨度添加“红色”和“绿色”类。
我的代码有效,但对于不等于最大值或最小值的值,添加了“null”类。如果我不返回 null,则显示“未定义”。

如何改进我的代码,使所有其他值(除了 min 和 max)只有初始类?

let skillset = { a: 4, b: 2, c: 2, d: 6 }

class Main extends React.Component {
  render() {
    let arr = Object.values(this.props.skillset)
    let minVal = Math.min(...arr)
    let maxVal = Math.max(...arr)

    const checkVal = (val) => {
      if (val === maxVal) { return 'green' }
      if (val === minVal) { return 'red' }
      return null
    }
    return (
      {
        Object.keys(this.props.skillset).map((skill) => {
          return (
            <div className='skill' key={skill}>
              <span className={`skill-values ${checkVal(this.props.skillset[skill])}`}>
                {this.props.skillset[skill]}</span>
            </div>
          )
        })
      }
    )
  }
}

【问题讨论】:

    标签: reactjs if-statement jsx classname react-dom


    【解决方案1】:

    您可以过滤和连接它们:

    const classList = (...list) => list.filter(v => v).join(' ');
    ...
    
    render() {
      const { skillset } = this.props;
      ...
      const checkVal = (val) => (
        (val === maxVal && 'green') ||
        (val === minVal && 'red')
      );
      ...
      return (
        ...
          <span className={classList('skill-values', checkVal(skillset[skill]))}>
    

    【讨论】:

    • 我建议你使用 BEM 来上课,所以 classList 看起来像 const classList = (be, ...ms) =&gt; [be, ...ms.filter(m =&gt; m).map(m =&gt; be + '--' + m)].join(' ');
    【解决方案2】:

    返回一个空字符串''

    const checkVal = (val) => {
      if (val === maxVal) { return 'green' }
      if (val === minVal) { return 'red' }
      return ''
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多