npm i react-canvas-draw --force
를 사용했다;<CanvasDraw
ref={canvasRef}
saveData={props.drawData[0]?.saveImage}
canvasWidth={width}
canvasHeight={height}
style={{backgroundColor: "#FFC0CB"}}
hideGrid={true}
disabled={canvasObj.drawingOn}
lazyRadius={0}
brushRadius={+canvasObj.radius}
brushColor={canvasObj.color}
catenaryColor={"#0a0302"}
immediateLoading={true}
/>
<canvas>
로 만든다면 ref를 넣어서 해당 객체로 펜의 크기라든지, 펜의 그림자 라든지를 조절할 수 있는데 이 라이브러리 또한 마찬가지이다.canvasRef.current.getSaveData()
: 이거때문에 이 라이브러리를 사용한다 펜으로 그린 데이터를 크기, 색, 위치를 string 타입으로 반환한다.canvasRef.current.undo()
: 그린 획을 리스트에서 pop하는 함수이다.canvasRef.current.eraseAll()
: 그린 획을 모두 지우는 함수이다.또 한 가지의 치명적인 단점이 있는데 바로 canvasWidth, canvasHeight prop에 정수밖에 들어가지 않는다는 것이다. 즉, %
나 vh
단위를 사용하면 고장난다;;
이를 해결하고자 아래와 같이 window 객체가 notnull일 때 작동하는 매서드를 선언하고
const heightFn = () => window ? Math.ceil(window.innerHeight) : 500;
const widthFn = () => window ? Math.ceil(window.innerWidth ) : 500;
useEffect(() => {
setWidth(widthFn());
setHeight(heightFn());
}, [])
글 잘읽었습니다 :) 한가지 궁금한 점이 있습니다.
react 높은 버전에서 사용하시고 계신 것 같은데 개발단계에서 작성하신 글 내용 외로 발생한 문제가 없으셨는지 궁금해요.