0
ラジウムできれいなDRYコードスタイルを作成しようとしています。 これはこれまでの私のボタンです。私が把握することはできませんReact Radium Classスタイルのオーバーライド
/**
*
* Button
*
*/
import React, { PropTypes } from 'react';
import Radium from 'radium';
const styles = {
base: {
borderRadius: '3px',
backgroundColor: '#23cdf4',
fontSize: '13px',
},
primaryBlue: {
backgroundColor: '#23cdf4',
},
primaryBlueBig: {
borderRadius: '8px',
fontSize: '16px',
padding: '14px 28px',
},
primaryRed: {
backgroundColor: '#F99CAC',
},
};
class Button extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<button
style={[styles.base, styles[this.props.type], this.props.style]}
>
{text}
</button>
);
}
}
Button.propTypes = {
text: PropTypes.any,
type: PropTypes.oneOf(['primaryBlue', 'primaryBlueBig']).isRequired,
style: PropTypes.object,
disabled: PropTypes.bool,
};
export default Radium(Button);
2つのことは:
- は、どのように私は自分自身を繰り返すことなくprimaryBlueBigにprimaryBlueで使用される背景色を拡張することができますか?
- 無効になっている場合、両方の青いボタンの背景色を変更するにはどうすればよいですか?
これは私が現在取り組んでいるもののスリム化されたバージョンであり、レンダリング機能で巨大なif elseブロックを持つことをやめようとしています。ありがとう! ^。^
私は完全に「大きな」クラスのリファクタリングに同意します!私が他の質問をしたのは、私が明らかにしなかったことは、タイプがprimaryBlueかprimaryRedかに基づいて、無効な色が違うということでした。障害者はブール値に過ぎないということを達成するきれいな方法がありますか? – Alexg2195
@ Alexg2195私はそれを反映するために私の答えを更新しました。どう思いますか? –