Creé un módulo de componente de reacción e importé ese módulo a un proyecto de paquete web.
Actualmente estoy importando el componente desde mi repositorio local:
npm install ~/git/repo-nameLo hago porque volver a cargar el módulo en npm para probar cada cambio menor no sería viable.
El módulo del componente enumera react y react-dom como dependencias de pares en package.json, que puede ver aquí:
{ ...(name, version,etc)... "devDependencies": { "@babel/cli": "^7.16.0", "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.4", "@babel/preset-react": "^7.16.0" }, "dependencies": { "core-js": "^3.19.2", "regenerator-runtime": "^0.13.9" }, "peerDependencies": { "react": "^17.0.2", "react-dom": "^17.0.2" } }Encontré esta pregunta de stackoverflow y la primera respuesta de la lista sonaba como el ticket. Sin embargo, después de que npm vincule las carpetas react y react-dom del componente en node_modules a las mismas carpetas en el directorio node_modules del proyecto webpack, sigo recibiendo el error.
Puedo rastrear el error hasta una línea en particular en el código modificado que Babel dispara cuando compilo el módulo del componente:
var availableNetworkOptions = (0, _react.useRef)(null);No entiendo esta sintaxis, pero puedo inferir que es parte de cómo babel transpila mi uso de "useRef" en mi archivo .js original (o al menos cómo intenta hacerlo). No puedo evitar preguntarme si esta extraña sintaxis podría tener algo que ver con el error. Parece poco probable, estoy seguro de que babel sabe lo que está haciendo. Por otro lado, parece que descarté el problema de "reacción duplicada" que parece ser una de las causas más comunes de este problema, o al menos lo he hecho hasta donde yo sé.
No puede usar ganchos fuera de un componente, refactorizarlo y convertirlo en una función o usarlos en un componente base funcional o de clase
El problema era, de hecho, múltiples copias de reacción debido a que tanto el módulo del componente local como el proyecto que lo usaban tenían la reacción instalada. La solución a la que me vinculé (ver la primera respuesta) no funcionaba porque no estaba siguiendo las instrucciones correctamente.
Esas direcciones son:
Below are the steps I followed : 1. In Your Application: a) cd node_modules/react && npm link b) cd node_modules/react-dom && npm link 2. In Your Library a) npm link react b) npm link react-dom 3)Stop your dev-server and do `npm start` again.En cambio, para el paso 2 estaba haciendo:
(in library) cd node_modules/react && npm link react cd ../react-dom && npm link react-dom