es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JS – ¿Cuándo declarar argumentos opcionales?

Imagina este método:

export default function useListenDeletedChatMessages(
chatRoomId = undefined,
{
onNext = undefined,
onError = undefined,
} = {}
) {
const { modifyMessage } = useMessages();

const startAt = useRef(new Date());

useEffect(() => {
if (!chatRoomId) return; <——– !!!!!

// Escucha los mensajes eliminados nuevos
const deletedMessagesListener = listenDeletedChatMessages(
  chatRoomId,
  startAt.current,
  modifyMessage,
  onNext,
  onError
);

// eslint-disable-next-line consistent-return
return () => {
  deletedMessagesListener();
};
// eslint-disable-next-line react-hooks/exhaustive-deps

}, [chatRoomId]);
}

Como puedes ver, declaro el parámetro “chatRoomId” como opcional, porque el método seguirá funcionando sin este parámetro (no escuchando los mensajes del chat).

He decidido establecer ese parámetro como undefined en este “REACT HOOK”, porque en mi interfaz de usuario, a primera vista, es undefined hasta que se realiza una consulta asíncrona después de que se monta mi componente.

Podrías pensar en hacer algo como:

if (chatRoomId) {
useListenDeletedChatMessages(chatRoomId);
}

Pero, en React, los hooks no se pueden envolver dentro de condicionales.

Entonces, mi pregunta es:

¿Cuándo debemos usar argumentos opcionales? Porque, para mí, algo como

function listenChatRoom(roomId = undefined) {}

es como decirle al programador que puede escuchar una habitación cuyo ID es opcional (y, en mi sistema, una habitación siempre tiene un ID único), es decir, no tiene sentido en absoluto.

¿Algún consejo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Los argumentos opcionales pueden ser útiles en casos en los que hay un valor predeterminado que se puede utilizar si no se proporciona ningún argumento. Sin embargo, es importante considerar si el argumento realmente debe ser opcional o si siempre debe ser requerido. En el caso del parámetro “chatRoomId” en el ejemplo proporcionado, parece que siempre se requiere, ya que una sala de chat no puede existir sin un ID.

    Si hay confusión sobre si un argumento debe ser opcional, puede ser útil considerar el propósito y el comportamiento de la función o método. ¿Se espera que el argumento siempre se proporcione, o hay casos en los que no sea necesario? Si el argumento es necesario para que la función funcione correctamente, probablemente debería ser requerido en lugar de opcional.

    Además, al trabajar con hooks de React, es importante considerar las reglas y limitaciones de los hooks. Como se menciona en el ejemplo, los hooks no pueden envolver condicionales, por lo que el uso de argumentos opcionales puede volverse más complicado en estos casos. Puede ser necesario reconsiderar la estructura o lógica del código para evitar tales problemas.

Comments are closed.