如何简化代码,我尝试生成对象并为每个更改方法调用并依赖于参数(newValues)我更改了一些字段,似乎我有重复的代码,如何避免这种情况?我是否应该使用一些更困难的方法来避免使用扩展语法
const formName = {
fieldRange: 'miConfiguration.fieldRange',
defaultTimeout: 'miConfiguration.doorConfiguration.defaultTimeout',
standAlone: 'miConfiguration.doorConfiguration.standAlone',
overrideTimeout: 'miConfiguration.doorConfiguration.overrideTimeout',
inputMode: 'miConfiguration.doorConfiguration.inputMode',
stopMi: 'miConfiguration.doorConfiguration.stopMi',
activeLow: 'miConfiguration.doorConfiguration.activeLow',
enableDualTechnology: 'miConfiguration.enableDualTechnology',
passageName: 'miConfiguration.passageName',
}
let {fieldRange, defaultTimeout, standAlone, overrideTimeout, inputMode, stopMi, activeLow, enableDualTechnology, passageName} = formName
let configurationsMi = {
[passageName]: null,
[fieldRange]: null,
[activeLow]: false,
[standAlone]: null,
[defaultTimeout]: null,
[overrideTimeout]: null,
[inputMode]: null,
[stopMi]: null,
[enableDualTechnology]: false,
}
const defaultValues = {
[MiConfigurationTypes.AccessPointOnly]: {
...configurationsMi,
[fieldRange]: MiFieldRanges.Disabled,
},
[MiConfigurationTypes.WanderingDetection]: {
...configurationsMi,
[fieldRange]: MiFieldRanges.Small,
},
[MiConfigurationTypes.MuteWanderingDetection]: {
...configurationsMi,
[fieldRange]: MiFieldRanges.Small,
},
[MiConfigurationTypes.LockedWanderingControl]: {
...configurationsMi,
[fieldRange]: MiFieldRanges.Small,
[standAlone]: DoorStates.Locked,
[defaultTimeout]: '00:00:03',
[overrideTimeout]: '00:00:30',
[inputMode]: InputModes.NotUsed,
[stopMi]: false,
},
[MiConfigurationTypes.OpenWanderingControl]: {
...configurationsMi,
[fieldRange]: MiFieldRanges.Small,
[standAlone]: DoorStates.Locked,
[defaultTimeout]: '00:00:03',
[overrideTimeout]: '00:00:30',
[inputMode]: InputModes.NotUsed,
[stopMi]: false,
},
}
onChange={(e, newValue) => {
console.log(defaultValues)
Object.keys(defaultValues[newValue]).forEach(key => change(key, defaultValues[newValue][key]))
}}