作曲について質問があります。誰かが私を助けてくれることを願っています。私はreact-css-modules
Sass を使用していますが、基本的な最下位レベルのコンポーネントの 1 つを構成するための最良の方法を知りたいです。
コンポーネントは次のとおりです。
import React, {PropTypes} from 'react'
import cssModules from 'react-css-modules'
import styles from './style.sass'
const Button = ({children = 'Submit', ...props}) => {
const align = props.align ? `-${props.align}` : ''
const type = props.type ? `-${props.type}` : ''
const styleName = `button${type}${align}`
return (
<button onClick={props.onClick} {...props} styleName={styleName}>
{children}
</button>
)
}
Button.propTypes = {
align: PropTypes.string,
onClick: PropTypes.func.isRequired,
type: PropTypes.string,
}
export default cssModules(Button, styles)
これまでのスタイルシートは次のとおりです。
@import "~components/styles/variables"
.button
color: $button-default
background-color: transparent
font-family: $font-family
font-size: $default-font-size
font-weight: $font-regular
line-height: $default-button-height
margin: 0 $pad 0 0
outline: none
padding: 0 $pad*2
.left
float: left
.right
float: right
.primary
color: $background-interaction
background-color: $button-default
.button-left
composes: button, left
.button-right
composes: button, right
.button-primary
composes: button, primary
.button-primary-left
composes: button, primary, left
.button-primary-right
composes: button, primary, right
今のところ、かなり痛いです。追加するすべての構成可能な props は、提供する必要がある構成されたクラスの数を指数関数的に増加させます。現在、 と を構成できますalign
。type
どちらも null になる可能性があるため、可能な組み合わせは 6 つあります。つまり、 base に加えて 5 つの合成クラスを作成する必要があります.button
。もう 1 つだけ props を追加した場合、たとえば boolean だけを追加した場合bold
、新しい合成クラス名を大量に追加する必要があります.button-bold, .button-left-bold, .button-right-bold, .button-primary-bold, .button-primary-left-bold, .button-primary-right-bold
。
要素に適用する複数のモジュールを指定できるようreact-css-modules
に設定を有効にするだけでよいことはわかっていますが、それはベスト プラクティスに反していると理解しています。ここで何かが欠けているようallowMultiple
に感じます。私たちは何を間違っていますか?