Estoy trabajando en una determinada evaluación en la que tengo que modificar una base de código para implementar una función. Ahora, hay un archivo jsx que llama a un gancho y un archivo js en el que se define el gancho. Llamemos al archivo jsx thing.jsx, y digamos que tiene algunas líneas de código que se ven así:
import useHook from '../hooks/useHook'; const thing = useHook({thingy1, thingy2, thingy3}); //rest of code goes hereLuego, el archivo en el que se define el gancho (useHook.js) se ve así:
function useHook() { //I'm supposed to implement this function } export default useHook;Ahora, observe que en la definición del gancho, no hay parámetros. Sin embargo, en el archivo jsx, pasan un objeto.
Dado que esta es una evaluación para mí, hay ciertas cosas que no quieren que cambie. No estoy seguro de si esperan o no que deje la definición de la función sin parámetros como se muestra arriba (¿lo que implicaría que simplemente puede pasar parámetros a ganchos que no tienen parámetros en sus definiciones?), o si realmente me están buscando para agregar los parámetros yo mismo.
¿Qué piensas? ¿Puede simplemente pasar parámetros a un enlace sin parámetros en otro archivo, o tengo razón al agregar los parámetros a la función yo mismo?
React Hooks son funciones de JavaScript, y si desea acceder a los parámetros de la función, debe usar dentro del gancho, así:
function useHook({thing1, thing2, thing3}) { //I'm supposed to implement this function }Bueno, no hay nada de malo en pasar parámetros a una función que no espera ninguno. Pero es casi inútil. Dado que esto es esencialmente javascript, definitivamente le permitirá pasar los parámetros.
Entonces, para responder a sus preguntas,
¿Puede simplemente pasar parámetros a un enlace sin parámetros en otro archivo,
Sí tu puedes.
¿O tengo razón al agregar los parámetros a la función yo mismo?
Esto depende de su requerimiento. Debe tenerse en cuenta que los parámetros formales no son la única forma de acceder a los parámetros de una función, es inútil hacerlo si la función no hace nada con sus argumentos incluso después de pasarlos.
Además, una pequeña nota para usted, en caso de que pueda ayudar, consulte el objeto de arguments . Puede pasar los parámetros, incluso sin que la función los espere explícitamente en la definición, y seguir usando los parámetros. Ejecute el fragmento a continuación y compruébelo usted mismo:
function testFunc() { console.log(arguments[0]); console.log(arguments[1]); console.log(arguments[2]); } testFunc(1, 2, 3);