์ฝ๋ฐฑ ์ฐธ์กฐ ๋์ ์๋ก์ด createRef API(React 16.3.0์ ๋์
๋จ)๋ฅผ ์ฌ์ฉํ๋ ์์์ ํจ๊ป connectDragSource๋ฅผ ์ฌ์ฉํ๋ฉด TypeError: previousRef is not a function
์ค๋ฅ์ ํจ๊ป ์ฑ์ด ์ถฉ๋ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
return (0, _react.cloneElement)(element, {
ref: function ref(node) {
newRef(node);
if (previousRef) {
previousRef(node); // << fails with new refs
}
}
});
๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ์ฒ์์ผ๋ก ๋๋ ๋ง์นจ๋ด ์๋ก์ด refs๋ฅผ ์ฌ์ฉํ ๊ธฐํ๋ฅผ ์ป์๊ณ react-dnd๊ฐ ๋ฐฉํด๊ฐ ๋์์ต๋๋ค.
์ฅ๊ธฐ์ ์ผ๋ก findDOMNode๋ฅผ ์ฌ์ฉํ๊ณ ref๋ฅผ ๊ต์ฒดํ๋ ์ ์ฒด react-dnd ๋ชจ๋ธ์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. React์ ์๋ก์ด createRef ๋ฐ withRef๊ฐ ์๋ ๊ฒฝ์ฐ. ์๋ก์ด forwardRef API . ๊ทธ๋ฆฌ๊ณ ๋ง์ API๊ฐ render props๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ง๊ธ์ previousRef๊ฐ current
์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด์ธ์ง ํ์ธํ๊ณ ์ด๋ฅผ ํจ์๋ก ํธ์ถํ๋ ๋์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํด์ผ ํฉ๋๋ค.
์์ง createRef()๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์๋ ์ฌ๋์ด ์์ต๋๊น?
๋์ค์ ์์ธํ ์์๋ณผ ์ ์์ง๋ง ์ฌ๊ธฐ์์ ์ํ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์๋๋ฐ์ค๊ฐ ์ข์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
@darthtrevino https://codesandbox.io/s/733onvqwl6 ์๋ง๋ ์ด ์๋๋ฐ์ค๊ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ์ด์ ์ฝ๋ฐฑ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋๋ก ๋๋๋ ค์ผ ํฉ๋๊น, ์๋๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
+1
React.createRef()
๋ฐ ref.current
ํ๋ฉด ์ฑ์ด ๋ค์ด๋์์ต๋๋ค.
์ธ์ ์์ ๋๋์?
์์ง ์์ ๋์ง ์์์ต๋๋ค :/
๋๋ ์ด๊ฒ์ ์กฐ์ฌํ๊ธฐ ์ํด react-conf ์ดํ์ ์๊ฐ์ ํ ์ ํ ๊ฒ์ด๋ค.
๋ค๋ฅธ ๋น div ์์ ref div๋ฅผ ์บก์ํํ์ฌ ์ ์๋ ๋๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
์์:
<div>
<div
style={{
position: "relative",
borderStyle: "dashed",
width: 300,
height: 200,
position: "relative"
}}
ref={this.myRef}
/>
</div>
๐ ์ด @darthtrevino์ ๋ํ ๋ชจ๋ ์ ๋ฐ์ดํธ. ์ ๋ฐ์ดํธ๋ฅผ ๋ฃ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค
@darthtrevino ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์์ ์ฌํญ์ ๋ํด ETA๋ฅผ ๋ฐ์ ์ ์์ต๋๊น?
๋ด ์๊ฐ์ ์ค๋์ด์ด์ผํฉ๋๋ค. ๋์ค์ ์๋ผ๋ธ ๋ฆด๋ฆฌ์ค์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ์ด์ ์ฝ๋ฐฑ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋๋ก ๋๋๋ ค์ผ ํฉ๋๊น, ์๋๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?