1. ์๋ฌ ๋ฐ์ ์์ธ
react-draggable์ ์ธ ์ผ์ด ์๊ฒจ์ ์ฌ์ฉํ๋ ์ค,
๋์์ ์ ๋๋ก ์๋ํ์ผ๋ ์ฝ์์ ์๋ฌ๊ฐ ๋ด๋ค.
๋ณด๋ค์ํผ findDOMNode ๋ StrictMode์์ ์ ๊ฑฐ๋์๋ค๋ ๋ด์ฉ์ด๋ค.
StricMode๋ React16์์ ์ถ๊ฐ๋ ๋ชจ๋๋ก ์๋ช ์ฃผ๊ธฐ์ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ ํ๋ค๊ณ ํ๋ค.
์ฐธ์กฐ : https://ko.reactjs.org/docs/strict-mode.html
react-draggable ๊ฐ์ ๊ฒฝ์ฐ ์ง์ ๊ฐ์ฒด๋ฅผ ์ปจํธ๋กคํ๋ค ๋ณด๋ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
2. ํด๊ฒฐ์ฑ
2-1. StrictMode ํด์ ํ๊ธฐ
๊ตณ์ด strictMode๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ค๋ฉด ํด์ ์์ผ์ฃผ๋ฉด ๋๋ค.
// src/index.js
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
// ์ด ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค
ReactDOM.render(
<App />,
document.getElementById('root')
);
2-2. nodeRef ์ฃผ๊ธฐ ๐
์ฌ์ค ์ด์ง๊ฐํ ํ๋ก์ ํธ๋ StrictMode ์ฌ์ฉ์ ๊ถ์ฅํ ํ ๋, ์์ ๋ฐฉ๋ฒ์ด ์ต์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ ์ผ ์ต์ ํ๋ ๋ฐฉ๋ฒ์ useRef๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์ฌ์ค ์ด๊ฒ react-draggable ๊ณต์ ์ฌ์ดํธ์์๋ ์ ์ํ ๋ฐฉ์์ด๋ค.
https://www.npmjs.com/package/react-draggable
import { useRef } from 'react';
const nodeRef = useRef(null);
<Draggable nodeRef={nodeRef}>
<div ref={nodeRef} className="box"></div>
</Draggable>
์ด๋ ๊ฒ useRef๋ฅผ ์ฌ์ฉํ๋ฉด ๊น๋ํ๊ฒ ํด๊ฒฐ๋๋ค!