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]);Entonces, mi pregunta es, ¿cómo optimizar o reducir la verificación de variables para el valor real? Primero obtengo variables con la destrucción del objeto, luego verifico las mismas variables para determinar el valor verdadero. Creo que de alguna manera puedo optimizar esto, pero no sé cómo
En general, si tiene una serie de controles if , podría considerar convertirlo en un switch . https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
Dado que principalmente está verificando para asegurarse de que las cosas estén definidas, pero también tiene algunos requisitos más matizados, puede ser mejor dividirlo un poco:
// 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])Si desea verificar si todos los valores del objeto son verdaderos, se puede usar el siguiente código.
Object.values(formValues).every(value => !!value)