Как имитировать css с несколькими именами классов в jsx

#javascript #css #reactjs #jsx

#javascript #css #reactjs #jsx

Вопрос:

Как я мог бы воссоздать следующий css в модуле css в стиле react?

.thing1, .thing2, .thing3, .thing4 { цвет: красный}

.thing5, .thing6, .thing7 { цвет: синий}

По сути, я получаю prop, содержащий число / строку, которые сгруппированы в один и тот же css. Но я не уверен, как бы я воссоздал эту настройку в javascript. Нижеприведенное кажется немного глупым для выполнения. Я также хотел бы, чтобы я мог избежать выполнения чего-то вроде поиска в массиве

 const styles = {
  thing1:{ color:red },
  thing2:{ color:red },
  thing3:{ color:red },
  thing4:{ color:red },
  thing5:{ color:blue },
  thing6:{ color:blue },
  thing7:{ color:blue },
}
  

Мысли?

Редактировать

Итак, примером может быть:

 render() {
  let {classes} = this.props
  return (
    <div className={???   this.props.input}></div>
  )
}
  

если бы я шел по маршруту css, я бы сделал

 render() {
  let {classes} = this.props
  return (
    <div className={"thing"   this.props.input}></div>
  )
}
  

Комментарии:

1. Не могли бы вы показать здесь полный код?

Ответ №1:

Я создал помощник для объединения стилей, вот он:

 const mergeStyles = styles => styles.join(' ');    
export default mergeStyles;
  

И я использую это таким образом:

 <div className={mergeStyles([styles.boxInfo, styles.narrowBoxInfo])}>
  

Если стили являются

 .boxInfo {}
.narrowBoxInfo {}
  

Надеюсь, это поможет!