Estoy trabajando en un sistema de construcción/diseño. y todo funciona bien. El único problema es cuando publico mi paquete e intento usar la función de devolución de llamada. No devuelve correctamente los datos necesarios para pasar a la siguiente pantalla.
Traté de obtener un ejemplo reproducible para usted en CodeSandbox, sin embargo, hubo algunas implicaciones/errores menores que no me permitieron llegar al error específico del que le estoy hablando ahora. Eso parece tener sus propios problemas.
Entonces, ¿cómo se reproduce este error? Bueno, nuestro paquete a partir de ahora es público. Como se dijo anteriormente, no puede importar a CodeSandbox ya que da otros errores en las versiones de React (como se dijo, me ocuparé de eso más adelante). El nombre del paquete es @sandboxcommerceeng/react , el paquete scss que podría necesitar es @sandboxcommerceeng/scss . Continúe e importe en un archivo CSS. @import '@sandboxcommerceeng/scss/lib/global.css' . Luego, en el @sandboxcommerceeng/react , importe ECommercePlatformModal . El siguiente código le dará un error reproducible. Tipo de Platforms , también lo exporta @sandboxcommerceeng/react
const [showEcommerceModal, setShowEcommerceModal] = React.useState<boolean>(false); const [url, setUrl] = React.useState<string>(''); const [selectedPlatform, setSelectedPlatform] = React.useState<keyof Platforms>(); <ECommercePlatformModal selectedPlatform={selectedPlatform} onSelectPlatform={(platform: keyof Platforms | undefined) => setSelectedPlatform(platform) } showModal={showEcommerceModal} onCancel={() => setShowEcommerceModal(false)} okButtonProps={{ onClick: () => console.log(url) }} // ✴ urlValidated={true} onUrlChange={(e: React.ChangeEvent<HTMLInputElement>) => { setUrl(e.target.value); }} url={url} />✴: No puedo obtener la URL del estado mediante una devolución de llamada. Intenté simplemente hacer referencia a una función de devolución de llamada por separado y luego registrar la URL desde allí. También intenté pegar la URL de la devolución de llamada. Nada está funcionando.
Objetivo final
El objetivo final aquí es tenerlo para que pueda aplicar mi paquete en mi aplicación React y tener la funcionalidad del paquete, es decir, el código javascript implementado en el paquete en sí, funcione como se esperaba. La expectativa para este componente en particular es poder console.log la url y hacer que se muestre en el paquete desde la función de callback de llamada okButtonProp{{onClick: () => console.log(url)}}
Por favor, hágamelo saber si hay algo más que necesite de mí.
Después de la depuración, el problema residía en el propio sistema de compilación. Usar React.memo en un componente de botón fue el culpable. La memorización no funcionaba según lo previsto debido al hecho de que ninguno de los elementos de utilería cambiaba realmente en el componente, por lo tanto, no volvía a representar el componente de botón con la nueva función y las variables que se le transmitían.
Seguí adelante y eliminé la memorización del componente memorizado, ya que no pude ver una manera de encajar la memorización en este caso.