に基づいて異なるスタイルを持つコンポーネントをレンダリングそれでは、私はそうと、私はMainContent
コンポーネント上記フィードバックメッセージのコンポーネントを持つシンプルなWebレイアウトを作成していましょう:React.js - 小道具
class WebLayout extends Component {
render() {
<div>
<Header />
<FeedBackMessage
shouldRenderMessage={true}
typeMessage={"error"}
message={"Wrong input!"}
/>
<MainContent />
</div>
}
}
としてみましょうerror
、warning
、success
など、さまざまな種類のメッセージがあるとします。
class FeedBackMessage extends Component {
renderMessage(){
const {shouldRenderMessage, typeMessage, message } = this.props;
if (shouldRenderMessage === true){
<div>
{message}
</div>
}
}
render(){
return (
<div>
{this.renderMessage().bind(this)}
</div>
)
}
}
私はtypeMessage
小道具値に基づいてFeedBackMessage
スタイリングをレンダリングすることができますどのように困惑しています:
FeedBackMessage
の内部では、私はそう何かを持っていることがあります。
たとえば、typeMessage
に「エラー」を渡した場合、FeedbackMessage
コンポーネントの赤い境界線のスタイリングが好きです。またはconfirm
を渡すと、緑の枠線でレンダリングしたいと思います。
感謝を! DRYプラクティスを使用する方法はありますか?たとえば、10以上の異なるメッセージがあるとどうなりますか?あなたの方法では、それは私が10以上の異なるCSSクラス名を持つ必要があることを意味するでしょう – Alejandro
DRYに関しては、あなたがtypeNameに基づいて異なる振る舞いを必要とするなら、あなたは本当に繰り返しません。可能な3つの異なる色がある場合は、同じクラス名を再利用し、クラス名と型名の間に1対多のマッピングを持たせることができます。 'this.props.typeName'をclassNameとして使用するともっと簡潔にできますが、まだ10以上のクラスがあります。 これはまだすべてがまだ多すぎるクラスだと思うなら、クラスを完全に避けるためにインラインスタイルを試してみてください。 –