Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

418
Visualizações
Reaccionar useRef en Canvas obteniendo nulo o indefinido

Estoy tratando de hacer referencia a un elemento DOM de lienzo para que su ancho sea el mismo que el de su padre sin alterar la escala del lienzo. Al hacerlo, obtengo un Uncaught TypeError: _canvasRef$current.getContext is not a function y no estoy exactamente seguro de cómo solucionarlo.

He registrado algunas cosas en la consola solo para hacer que la aplicación se ejecute, pero el problema está dentro del useEffect

 import SignaturePad from 'react-signature-canvas' const canvasRef = useRef<HTMLCanvasElement>(null) useEffect(() => { const ctx: CanvasRenderingContext2D | null | undefined = canvasRef.current?.getContext('2d') const ctxContainer = document.getElementById('ctxContainer') console.log('ctx: ', ctx) // if (ctx && ctxContainer) { // ctx.style.width = '100%' // ctx.style.height = '100%' // ctx.width = ctxContainer.clientWidth // } }, []) const save = () => { console.log('saved!') } console.log('canvasRef: ', canvasRef) return ( <div id={`ctxContainer`} className={'signatureInput__option-draw'}> <SignaturePad ref={canvasRef} canvasProps={{ className: 'signatureInput__option-draw__canvas', }} onEnd={save} /> </div> )
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Prueba esto.

Tenga en cuenta que es posible que aún deba realizar algunos cambios en el siguiente código para cumplir con todos sus requisitos (como el manejo de eventos cuando el usuario cambia el tamaño de la pantalla). El siguiente código solucionará el problema que enfrenta en este momento.

 useEffect(() => { if (canvasRef.current) { const canvas = canvasRef.current.getCanvas(); const ctx = canvas.getContext('2d'); // do something with the canvas ref if (ctx) { ctx.canvas.width = window.innerHeight; ctx.canvas.height = window.innerHeight; } } }, []);
about 4 years ago · Juan Pablo Isaza Relatório

0

Intenta usar getCanvas() . no creo que getContext() se proporcione con el paquete

 function App() { const canvasRef = React.createRef(null); useEffect(() => { const canvas = canvasRef.current; console.log(canvas.current); const ctx = canvas.getCanvas(); const ctxContainer = document.getElementById("ctxContainer"); console.log("ctx: ", ctx); if (ctx && ctxContainer) { ctx.style.width = "100%"; ctx.style.height = "100%"; ctx.width = ctxContainer.clientWidth; } }, []); const save = () => { console.log("saved!"); }; console.log("canvasRef: ", canvasRef); return ( <div className="App"> <div id={`ctxContainer`} className={"signatureInput__option-draw"}> <SignaturePad ref={(ref) => { canvasRef.current = ref; }} canvasProps={{ className: "signatureInput__option-draw__canvas", }} onEnd={save} /> </div> </div> ); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda