Tengo el siguiente fragmento de código.
a = [] b = [] c = [] useEffect(() => { if(isEmpty(a) && isEmpty(b) && isEmpty(c)) { data.refetch() } if(data.isFetching){ //do something } if(response.isFetching){ //do something } }, [ //Some depedencies ])Entonces, ¿hay alguna forma de modificar estas declaraciones if? Como probé con las declaraciones de cambio, pero no está ayudando aquí. Entonces, cualquier sugerencia sería genial. Gracias.
Puede eliminar todos los if del código de la siguiente manera:
a = []; b = []; c = []; conditions = [ [[a,b,c].every((x) => isEmpty(x)), () => data.refetch()], [data.isFetching, someOtherFunction], [response.isFetching, anotherFunction] ]; conditions.forEach(cond => cond[0] && cond[1]());No recomendaría esto ya que hace que su código sea menos legible y confuso.
La función cada probará la condición para cada elemento de una matriz y se unirá con un y:
... [a,b,c].every((x) => isEmpty(x)) ...Luego, para probar cada condición, puede agregarlas a una matriz e iterar a través de ellas, con una devolución de llamada para cada una si desea crear:
conditions = [ [[a,b,c].every((x) => isEmpty(x)), () => data.refetch()], [data.isFetching, someOtherFunction], [response.isFetching, anotherFunction] ] condtions.forEach((cond) => { if(cond[0]) cond[1]() } )Entonces, como lo sugiere derpirscher , podría eliminar el último si con
conditions.forEach(cond => cond[0] && cond[1]());Pero nuevamente, esto hace que su código sea más confuso, sugeriría mantener los ifs para que quede más claro.