reactjs - 如何干燥一些需要特征标记的方法
问题描述
下面是我需要处理功能标志的组件。我想知道是否有人对DRY
我下面的方法有什么建议 -renderFirstQuarter
等等
class MoreThanSpace extends Component<Props> {
renderFirstQuarter = (howItWorksEnabled: boolean) => {
const icon = howItWorksEnabled ? (
<img className={tenantcss.reassuranceIcon} src={bookIcon} alt="book_anytime" />
) : (
<Icon className={m.fontLgIi} name={t('reassurance.opportunities.icon')} />
);
const title = howItWorksEnabled ? t('reassurance.book_anytime.title') : t('reassurance.opportunities.title')
const body = howItWorksEnabled ? t('reassurance.book_anytime.body') : t('reassurance.opportunities.body')
return (
<div className={css.quarter}>
{icon}
<h3 className={cx(m.fontRegular, m.demi, m.fgGreyDarker, m.mtm, m.mb0, m.uppercase)}>
{title}
</h3>
<p className={cx(m.fontRegular, m.mtm, m.mb0, m.fgGreyDark)}>
{body}
</p>
</div>
);
};
renderSecondQuarter = (howItWorksEnabled: boolean) => {
const icon = howItWorksEnabled ? (
<img className={tenantcss.reassuranceIcon} src={dataIcon} alt="data-driven" />
) : (
<Icon className={m.fontLgIi} name={t('reassurance.service.icon')}/>
);
const title = howItWorksEnabled ? t('reassurance.data_driven.title') : t('reassurance.service.title')
const body = howItWorksEnabled ? t('reassurance.data_driven.body') : t('reassurance.service.body')
return (
<div className={css.quarter}>
{icon}
<h3 className={cx(m.fontRegular, m.demi, m.fgGreyDarker, m.mtm, m.mb0, m.uppercase)}>
{title}
</h3>
<p className={cx(m.fontRegular, m.mtm, m.mb0, m.fgGreyDark)}>
{body}
</p>
</div>
);
};
renderThirdQuarter = (howItWorksEnabled: boolean) => {
const icon = howItWorksEnabled ? (
<img className={tenantcss.reassuranceIcon} src={allInclusiveIcon} alt="all-inclusive"/>
) : (
<Icon className={m.fontLgIi} name={t('reassurance.verified_spaces.icon')}/>
);
const title = howItWorksEnabled ? t('reassurance.every_idea.title') : t('reassurance.verified_spaces.title')
const body = howItWorksEnabled ? t('reassurance.every_idea.body') : t('reassurance.verified_spaces.body')
return (
<div className={css.quarter}>
{icon}
<h3 className={cx(m.fontRegular, m.demi, m.fgGreyDarker, m.mtm, m.mb0, m.uppercase)}>
{title}
</h3>
<p className={cx(m.fontRegular, m.mtm, m.mb0, m.fgGreyDark)}>
{body}
</p>
</div>
);
};
renderLastQuarter = (howItWorksEnabled: boolean) => {
const icon = howItWorksEnabled ? (
<img className={tenantcss.reassuranceIcon} src={globeIcon} alt="all-inclusive"/>
) : (
<Icon className={m.fontLgIi} name={t('reassurance.global.icon')}/>
);
const title = howItWorksEnabled ? t('reassurance.all_in_one.title') : t('reassurance.global.title')
const body = howItWorksEnabled ? t('reassurance.all_in_one.body') : t('reassurance.global.body')
return (
<div className={css.quarter}>
{icon}
<h3 className={cx(m.fontRegular, m.demi, m.fgGreyDarker, m.mtm, m.mb0, m.uppercase)}>
{title}
</h3>
<p className={cx(m.fontRegular, m.mtm, m.mb0, m.fgGreyDark)}>
{body}
</p>
</div>
);
};
render() {
const howItWorksEnabled = this.props.isFeatureEnabled('how_it_works');
const one = this.renderFirstQuarter(howItWorksEnabled);
const two = this.renderSecondQuarter(howItWorksEnabled);
const three = this.renderThirdQuarter(howItWorksEnabled);
const four = this.renderLastQuarter(howItWorksEnabled);
return (
<div className={css.section}>
<Wrapper>
<div className={cx(css.sectionBody, m.cf)}>
{one}
{two}
{three}
{four}
</div>
</Wrapper>
</div>
);
}
}
export default MoreThanSpace;
解决方案
推荐阅读
- mysql - 在 Have 子句中使用组 Concat 的总和
- android - “center_horizontal与属性重力不兼容......” xml新手,我不明白我的问题是什么
- windows - Windows 直接关闭 Tkinter 主循环
- schema - JSONschema 中键 A 的值等于键 B 的值
- javascript - 在切换方法之后测试子组件是否有条件地呈现
- azure-devops - 使用 Azure 的 Terraform - 资源操作符号未在日志中正确显示
- sql-server - 将 SAS 日期时间转换为 SQL 格式
- python - 您如何有效地缓存大型 django 查询集?
- sql-server - SQL 或 SAS 函数,用于根据其他类似记录估算分类变量
- javascript - 限制并发上传