const {
service,
customer,
company,
parking,
aircraftType,
aircraft,
endPlan,
startPlan,
heatingPointsMasterCodes,
lavatoryType,
passengersCategory } = formValues;
useEffect(() => {
customer &&
company &&
(parking || service === ReferenceCodesOfServicesEnum.ProvisioningMinibus) &&
aircraftType &&
aircraft &&
endPlan &&
startPlan &&
(heatingPointsMasterCodes ||
lavatoryType ||
passengersCategory ||
formValues[DocumentItemNamesEnum.WaterSystemMaintenance] ||
service === ReferenceCodesOfServicesEnum.AircraftCooling)
? setDisabled(false)
: setDisabled(true);
}, [formValues]);因此,我的问题是,如何优化或减少变量检查的真值?首先从对象中获得具有析构的变量,然后检查相同的变量的真值。我想我可以在某种程度上优化它,但是不知道怎么做
发布于 2022-05-09 10:33:29
通常,如果您有一系列if检查,则可以考虑将其转换为switch。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
由于您主要是检查以确保定义了事物,但也有一些更细微的需求,所以最好稍微细分一下:
// Properties required irrespective of environment properties in DocumentItemNamesEnum or ReferenceCodesOfServicesEnum
const requiredProperties = ["customer",
"company", "aircraftType",
"aircraft", "endPlan",
"startPlan"]
const requiredPropertiesDefined = requiredProperties.every(value => !!value)
useEffect(() => {
if (requiredPropertiesDefined &&
(formValues.parking || formValues.service === ReferenceCodesOfServicesEnum.ProvisioningMinibus) &&
&& (formValues.heatingPointsMasterCodes ||
formValues.lavatoryType ||
formValues.passengersCategory ||
formValues[DocumentItemNamesEnum.WaterSystemMaintenance] ||
service === ReferenceCodesOfServicesEnum.AircraftCooling) {
setDisabled(true)
} else {
setDisabled(false
}
}, [formValues])发布于 2022-05-09 10:29:32
如果要检查对象的所有值是否为真,则可以使用以下代码。
Object.values(formValues).every(value => !!value)https://stackoverflow.com/questions/72170298
复制相似问题