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の類似のオブジェクトを持っています それを避ける方法。または、オブジェクトをマップしてフィールドを変更するだけです(newValues(MiConfigurationTypes.OpenWanderingControl、... etc)) –