をCSSモジュールを使用した小道具を反応して、私はText
コンポーネントがあります:あなたが見ることができるようには私のプロジェクトで
import React from 'react'
import { bool, string, number, element, func, object, any } from 'prop-types'
import cx from 'classnames'
import s from './styles/Text.css'
const Text = (props) => {
const renderMultiLines =() => {
const items = props.children.split(' ')
return items.map(text => <div style={{ marginBottom: '2px' }} className={s.multiLineItem}>{text}</div>)
}
return (
<div
className={cx(
s.text,
props.ellipsis && s.ellipsis,
props.isUpperCase && s.isUpperCase,
props.isBold && s.bold,
props.isExtraBold && s.extraBold,
props.isExtraSpaced && s.extraSpaced,
props.multiLine && s.multiLine,
props.active && s.underlined,
props.active && s.primary,
s[props.color],
s[props.size],
)}
onClick={props.onClick}
style={props.style}
>
{!props.multiLine && props.children}
{props.multiLine && renderMultiLines()}
</div>
)
}
Text.defaultProps = {
isBold: false,
isExtraSpaced: false,
isExtraBold: false,
children: '',
color: '',
ellipsis: false,
size: 'extraExtraSmall',
isUpperCase: false,
onClick: undefined,
style: {},
active: false,
}
Text.propTypes = {
isBold: bool,
isExtraSpaced: bool,
isExtraBold: bool,
children: any,
color: string,
ellipsis: bool,
size: string,
isUpperCase: bool,
onClick: func,
style: object,
active: bool,
}
export default Text
を、意図は、あなたがのレイアウトを変更する小道具を渡すということですテキスト
考えられるのは、テキストのスタイルが限られていることになり、少しばらつきが生じることがないということです。
私のプロジェクトでは、このコンポーネントの使用例は次のようになります。
<Text
onClick={() => this.handleGlobalChangeDate(Number(n))}
isBold
size="medium"
color="primary"
active={Number(n) === activeDay && visibleMonth === activeMonth}
>{n}</Text>
これは乱雑に見える、と私はisBold
、size
、color
などのように感じるここに表示され、中に渡される必要はありません小道具として。むしろ、CSSで処理し、プロジェクトのvariables.css
ファイルを参照する必要があります。
このように、Text
コンポーネントにclassName
を添付したいと思います。
しかし、これはコンポーネントであり、たとえばdiv
ではないため、className
は単にコンポーネントとしてプロップとして渡されます。
多くのスタイル関連の小道具を使用する代わりに、この問題に対処するためにCSSを使用するにはどうすればよいですか?