-
Notifications
You must be signed in to change notification settings - Fork 1
๐ ๋ง์ฐ์ค ์๋์์น ๊ณ์ฐ์ ์ด์ํด
Soobeen Yoon edited this page Dec 18, 2022
·
3 revisions
-
์๋
- ์ ๋์์ธ๊ณผ ๊ฐ์ด, svg ํจ์ค์ ๋ง์ฐ์ค๋ฅผ ํธ๋ฒํ๋ฉด, ๊ด๋ จ๋ ์๋ด ๋ฉ์์ง๊ฐ ๋งํ์ ์ ๋ํ๋๊ฒ ๋ง๋ค๊ณ ์ ํ๋ค!
- ํจ์ค๋ผ๋ฆฌ ์๋ก ๊ฒน์น ์ ์๊ธฐ ๋๋ฌธ์, ํจ์ค ์์ ๊ณ ์ ๋ ์์น์ ๋ฉ์์ง๋ฅผ ํํํ๋ ๊ฒ๋ณด๋ค,
๋ฉ์์ง๊ฐ ๋ง์ฐ์ค๋ฅผ ๋ฐ๋ผ๋ค๋๋๋ก ํด์ ์๋์ ์ผ๋ก ์์ ๋กญ๊ฒ ํ์ธํ ์ ์๋๋ก ๋์์ธํ ์ผ์ด์ค์ด๋ค.
-
์ ๊ทผ
-
onMouseEnter
์onMouseLeave
๋ก ๋ง์ฐ์ค ํธ๋ฒ๋ฅผ ์ธ์ํด ์ํ๋ก ๊ด๋ฆฌํ๊ธฐ๋ก ํ๋ค. - ๋ง์ฐ์ค ์์น๋ฅผ ์ํ๋ก ๋ณด๊ดํ๊ณ
onMouseEvent
๋ฅผ ํตํด ๋ง์ฐ์ค ์์น๋ฅผ ๊ฐฑ์ ํ๊ธฐ๋ก ํ๋ค.
-
-
MouseEvent
๋ ์ ๋ง ๋ค์ํ ๋ง์ฐ์ค ์์น ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.-
event.clientX, Y
: ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ํ์๋๊ณ ์๋ ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ํ ์ขํ๋ฅผ ์ ๊ณตํ๋ค -
event.offsetX, Y
:event.target
์ ๊ธฐ์ค์ผ๋ก ํ ์ขํ๋ฅผ ์ ๊ณตํ๋ค. -
event.pageX, Y
: ์ ์ฒด ํ์ด์ง(document)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ขํ๋ฅผ ์ ๊ณตํ๋ค. -
event.screenX, Y
: ์ฌ์ฉ์์ ๋ชจ๋ํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์ขํ๋ฅผ ์ ๊ณตํ๋ค.
-
- ์ด๋ ๊ฒ ๋ค์ํ ์์น์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ฐ, ๋ชจ๋ ํน์ ํ ์๋ฆฌ๋จผํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์๋๊ฐ์ ์ฝ๊ฒ ๊ตฌํ๊ธฐ์๋ ๋ฏธ๋ฌํ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
- ์ง๊ด์ ์ผ๋ก ๊ฐ์ฅ ๊ฐ๋จํ ๊ตฌํ๋ฐฉ๋ฒ์
offsetX, Y
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ฌ ๋ฐ๋ก ์คํํ๋ค. - ํธ๋ฒ์ ๋์์ด ๋๋ ํจ์ค๋ค์ด DOM๊ตฌ์กฐ์ ์ตํ์์ ์์นํ๊ธฐ ๋๋ฌธ์ target ์ค์ธ์ผ๋ก ์ธํ ๋ฒ๊ทธ๋ ์์ ๊ฒ์ด๋ผ๊ณ ์์ํ๋ค.
- ๋จ, React์์๋ offsetX, Y์ ์กฐ๊ธ ํน์ดํ๊ฒ ์ ๊ทผํ๋ค.
- ๋ค๋ฅธ ๋ง์ฐ์ค ์์น ํ๋กํผํฐ๋ค๊ณผ ๋ฌ๋ฆฌ
event.offsetX
๊ฐ ์๋๋ผevent.nativeEvent.offsetX
๋ก ์ ๊ทผํด์ผ ํ๋ค.
- ๋ค๋ฅธ ๋ง์ฐ์ค ์์น ํ๋กํผํฐ๋ค๊ณผ ๋ฌ๋ฆฌ
const onMouseLeave = (event: React.MouseEvent): void => {
setIsHovered(false);
};
const onMouseEnter = (event: React.MouseEvent): void => {
setMousePos(() => ({ x: event.nativeEvent.offsetX, y: event.nativeEvent.offsetY }));
console.log(event.target);
console.log({ x: event.nativeEvent.offsetX, y: event.nativeEvent.offsetY });
setIsHovered(true);
};
const onMouseMove = (event: React.MouseEvent): void => {
if (isHovered) {
setMousePos(() => ({ x: event.nativeEvent.offsetX, y: event.nativeEvent.offsetY }));
console.log(event.target);
console.log({ x: event.nativeEvent.offsetX, y: event.nativeEvent.offsetY });
}
};
-
๋ฌธ์ : ์ด๋ ๊ฒ ๊ตฌํ์ ํ๋๋ผ๋...
onMouseEnter
์์ ์กํ๋ ๊ฐ๊ณผonMouseMove
์์ ์กํ๋ ๊ฐ์ด ๋ค๋ฅด๋ค....- ์์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค!
-
event.target
์ ๋ถ๋ช ๋์ผํ๋ฐ,onMouseEnter
์onMouseMove
์์ ์กํ๋offsetX,Y
๊ฐ์ด ๋ค๋ฅด๊ฒ ๋ํ๋๊ณ ,
์ด๊ฒ ๋ฐ์๋์ด ๋งํ์ ์ด ๋ถ์์ฐ์ค๋ฝ๊ฒ ์์ง์ด๋ ํ์์ด ์ผ์ด๋๋ค.
- ref์ wrapper ์๋ฆฌ๋จผํธ๋ฅผ ์ ์ฅํ๋ค.
-
clientX, Y
๋ฅผ ๋ฐ์์จ๋ค. -
getBoundingClientRect()
๋ฅผ ์ด์ฉํด wrapper ์๋ฆฌ๋จผํธ์ ์์น๋งํผ์ ๋นผ์ ์ง์ ๊ณ์ฐํ๋ค.
const onMouseLeave = (event: React.MouseEvent): void => {
setIsHovered(false);
};
const onMouseEnter = (event: React.MouseEvent): void => {
setMousePos(() => ({
x: event.clientX - (domRef.current?.getBoundingClientRect().left as number),
y: event.clientY - (domRef.current?.getBoundingClientRect().top as number),
}));
setIsHovered(true);
};
const onMouseMove = (event: React.MouseEvent): void => {
if (isHovered) {
setMousePos(() => ({
x: event.clientX - (domRef.current?.getBoundingClientRect().left as number),
y: event.clientY - (domRef.current?.getBoundingClientRect().top as number),
}));
}
};
-
ํด๊ฒฐ! ์ด๋ ๊ฒ ํ๊ณ ๋๋ ๋ถ๋๋ฝ๊ฒ ๋งํ์ ์ด ์ ๋ ๋๋์๋ค.
-
https://github.com/facebook/react/issues/4431 ๊ตฌํ์ ํ๋ค ์ฐธ๊ณ ํ๋ฉฐ ์ฝ์ ์ด ๊ธ์์๋
offsetX, Y
๋getBoundingClientRect
๋ก ๊ณ์ฐํ๋ ๊ฒ๊ณผ ๋์ผํ ๋์์ ํ๋ค๊ณ ํ๋๋ฐ, ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ง๋ ๋ฏธ์ง์์ด๋ค... - target ์๋ฆฌ๋จผํธ๊ฐ ๋ค๋ฅด๊ฒ ์ธ์๋๋ ๊ฒ์ด ๋ฌธ์ ์ธ๊ฐ ์ถ์์ผ๋, ์ค์ ๋ก ๋ก๊ทธ์ ์ฐํ๋ ํ๊ฒ์ ์์ ํ ๋์ผํ๋ค.
- ์์ง ์์ธ์ ๋ช ํํ ์ ์ ์์ผ๋, ์์ผ๋ก ๋ง์ฐ์ค ์๋์์น๋ฅผ ๊ตฌํ ์ผ์ด ์๋ค๋ฉด ํญ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์ ์ ์์์ ์ผ๋์ ๋๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
-
https://github.com/facebook/react/issues/4431 ๊ตฌํ์ ํ๋ค ์ฐธ๊ณ ํ๋ฉฐ ์ฝ์ ์ด ๊ธ์์๋
- OaO ํ๊ฒฝ์ค์ A to Z
- CRLF ๋๊ฐ ๋ญ๋ฐ ๋ ํ๋ค๊ฒ ํด?
- Github Issue ๋๋ํ๊ฒ ์ฌ์ฉํ๊ธฐ
- OAO! CI CD ์ ์ฉ๊ธฐ with release ์๋ํ
- ๋งค๋ฒ ๋ค๋ฅธ import๋ฌธ
- ๋ชป์๊ธด ์๋๊ฒฝ๋ก์์ ๊ฐzlzl์กด ์ ๋๊ฒฝ๋ก๋ก๐
- TodoList API ๊ฐ๋ฐ๊ธฐ
- ์์กด์ฑ ์ฃผ์ ์ผ๋ก DB๋ฅผ ๋ฐ๊ฟ๋ณด์
- ๋ ๋๋ง ์ต์ ํ ์๋ง: useNavigate๋ฅผ ์ถ๊ฐํ ์๊ฐ ๋ฆฌ๋ ๋ ๋ฒ์๊ฐ ํ์ฅ๋ ๊ฑด์ ๋ํ์ฌ
- ๋ ๋๋ง ์ต์ ํ 1ํ: ๋ ๋๋ง ๋ฒ์์ ๋ํ์ฌ (by ์ต์ ํ๋ฌด์)
- ๋ ๋๋ง ์ต์ ํ 2ํ: ์๋ชป๋ custom hook ์ฌ์ฉ,, ์ ์ฒด ๋ฆฌ๋ ๋๋ง์ ๋ถ๋ฅด๋ค,,
- ๋ ๋๋ง ์ต์ ํ 3ํ: Todo ์์ธ ์ข ๋ดค๋ค๊ณ ํ ์ด๋ธ ์ ์ฒด๊ฐ ์ฌ๋ ๋๋ง ๋๋๊ฑด์ ๊ณ ์น๊ธฐ๐
- ๋ ๋๋ง ์ต์ ํ 4ํ: ๋ค์ด์ด๊ทธ๋จ ํธ
- ๐ ๋ง์ฐ์ค ์๋์์น ๊ณ์ฐ์ ์ด์ํด
- React ์ปดํฌ๋ํธ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด๋ณด์ ๐๐ป๐จ
- ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ๋ณด์: Modal ๋ถ๋ฆฌ๊ธฐ ๐น
- ์ ํ๊ด๊ณ๋ฅผ ์๋์์ฑ์ผ๋ก ์ถ๊ฐํด๋ณด์ ๐