Tengo una función useEffect que filtra dos matrices, pero por alguna razón no funciona correctamente. Si elimino la matriz de dependencias, devuelve los datos correctos pero sigue en bucle. 
Luego volví a agregar la matriz de dependencia, pero luego vuelve vacía. ¿Alguna idea de dónde me estoy equivocando?
useEffect(() => { if (extras.length && pkg ? .id) { setVisibleExtras( extras.filter(({ availableOnTariff }) => availableOnTariff.some(({ id }) => id === pkg.id) ) ); console.log('visible extras', visibleExtras); } }, [extras, pkg]);Si setVisibleExtras cambia los extras , siempre activará el efecto de uso completo nuevamente ... si es su caso, use la función de devolución de llamada en setVisibleExtras en su lugar:
useEffect(() => { if (extras.length && pkg ? .id) { setVisibleExtras((extras) => extras.filter(({ availableOnTariff }) => availableOnTariff.some(({ id }) => id === pkg.id) ) ); console.log('visible extras', visibleExtras); } }, [pkg]);