我尝试用一种方法简化代码,在这种情况下如何避免重复代码。没有两种方法,如何实现并循环执行。
const residentsConfigurations = configurations.filter(({alarmType}) => alarmType === alarmTypes.Care || alarmType === alarmTypes.Wandering)
const staffConfigurations = configurations.filter(({alarmType}) => alarmType === alarmTypes.Assistance || alarmType === alarmTypes.Panic)
{currentTab === 0 &&
residentsConfigurations.map((configuration, index) =>
<Grid key={index} item xs={12} lg={6}>
<Item
key={configuration.alarmType}
configuration={configuration}
changeBehavior={this.changeBehavior}
changeConfiguration={this.changeConfiguration}
/>
</Grid>
)}
{currentTab === 1 &&
staffConfigurations.map((configuration, index) =>
<Grid key={index} item xs={12} lg={6}>
<Item
key={configuration.alarmType}
configuration={configuration}
changeBehavior={this.changeBehavior}
changeConfiguration={this.changeConfiguration}
/>
</Grid>
)}
最佳答案
重构:
const newConfig = configurations.filter(({ alarmType }) =>
currentTab === 1
? alarmType === alarmTypes.Assistance || alarmType === alarmTypes.Panic
: alarmType === alarmTypes.Care || alarmType === alarmTypes.Wandering;
);
{
newConfig.map((configuration, index) => (
<Grid key={index} item xs={12} lg={6}>
<Item
key={configuration.alarmType}
configuration={configuration}
changeBehavior={this.changeBehavior}
changeConfiguration={this.changeConfiguration}
/>
</Grid>
));
}