0
코드를 단순화하는 방법, 개체를 생성하고 각 변경 방법을 호출하고 인수 (newValues)에 따라 달라집니다. 일부 필드를 변경하고 중복 코드가있는 것처럼 보입니다 이 경우? 이미 configurationsMi
와 함께했던 것처럼 - - 그 참조 나는 그냥 그대로 별도의 객체로 반복되는 부분을 넣을 수 있습니다스프레드 구문으로 단순화하는 방법 es6
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]))
}}
피하고자하는 중복 코드는 어디에 있습니까? 'LockedWanderingControl' /'OpenWanderingControl'을 의미합니까? – Bergi
나는 LockedWanderingControl/OpenWanderingControl에 대해 비슷한 객체를 가지고있다. 어떻게 그것을 막아야 하는가? 또는 tghrought 객체를 매핑하고 필드를 변경하는 것은 (newValues (MiConfigurationTypes.OpenWanderingControl, ... etc))에 달려 있습니다. –