He usado Cleave en MUCHOS proyectos de React. Pero de repente hoy no está trabajando en un nuevo proyecto.
Aquí están mis paquetes (para que puedas ver las versiones):
"dependencies": { "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^13.5.0", "cleave.js": "^1.6.0", "react": "^18.1.0", "react-dom": "^18.1.0", "react-scripts": "5.0.1", "web-vitals": "^2.1.4" },Aquí está la implementación de Cleave dentro de un componente:
import React, { useContext } from 'react' import Cleave from 'cleave.js' const PhoneInput = ({ onChange, passedValue, }) => { return ( <Cleave placeholder="Input a phone number" onChange={onChange} value={passedValue} options={{ phone: true, phoneRegionCode: 'us' }} /> ) } export default PhoneInput Pero mi compilador sigue arrojando el siguiente error: Uncaught TypeError: Cannot set properties of undefined (setting 'element')
Intenté construir este mismo componente en un CodeSandbox para ver si tal vez era algo con mi instancia de create-react-app, pero obtuve lo mismo en el sandbox que aquí.
Sé que hay muchas preguntas similares a esta, pero cada una parece específica para la implementación, y no parece haber respuestas que se ajusten a mi caso.
Resolví esto. Al importar, es importante usar cleave.js/react y no solo cleave.js .
También necesitaba importar los archivos de soporte para internacionalizar números de teléfono, por lo que mis importaciones terminaron luciendo así:
import React, { useContext } from 'react' import Cleave from 'cleave.js/react' import 'cleave.js/dist/addons/cleave-phone.i18n.js'