ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
ํ๋ฉด์ ๋๋๋ง ๋ ๊ฐ ๋ฆฌ์คํธ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ๋ฆฌ์คํธ์ ์์ธ ํ์ด์ง๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ๊ฐ ๋ฆฌ์คํธ์ ๊ณ ์ ์์ด๋ ๊ฐ์ dataset์ ํ ๋นํด์ฃผ์๊ณ ํด๋น id๊ฐ์ path query parameter์ ํ ๋นํด์ฃผ์๋ค.
const LinkPage: FC<LinkPageProps> = ({ itemInfoList }: LinkPageProps) => {
const navigate = useNavigate();
const moveToDetailPage = (
e: React.MouseEvent<HTMLParagraphElement, MouseEvent>
) => {
const id = (e.target as HTMLParagraphElement).dataset.id;
navigate(`/detail?id=${id}`);
};
( ... )
return (
<LinkTitle
data-id={itemInfo.key}
onClick={moveToDetailPage}
>
{itemInfo?.sent ? itemInfo.sent.subject : "๋ฌด์ "}
</LinkTitle>
);
};
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
'EventTarget' ํ์์ 'dataset' ์์ฑ์ด ์์ต๋๋ค. ts(2339)
๋ฌธ์ ํด๊ฒฐ
TypeScript ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ์ค์ ๋ฐํ์์ ์กด์ฌํ ๋ณ์์ ํ์ ๊ณผ ๋ค๋ฅด๊ฒ ์ถ๋ก ํ๊ฑฐ๋ ๋๋ฌด ๋ณด์์ ์ผ๋ก ์ถ๋ก ํ๋ ๊ฒฝ์ฐ์ ์์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ธ๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด as ๋ฌธ๋ฒ์ ์ฌ์ฉํ์๋ค.
๋ค์๊ณผ ๊ฐ์ด e.target๋ p ํ๊ทธ ๊ธฐ๋ฐ์ธ ์๋ฆฌ๋จผํธ์ด๊ธฐ ๋๋ฌธ์ type ๊ฐ์ด HTMLParagraphElement์ด๋ฉฐ, ์์ ์ ์ผ๋ก event.target์ ํน์ property์ ์ ๊ทผํ๊ธฐ ์ํด as ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํด๋น type์ผ๋ก ํ์ ๋จ์ธ(Type Assertion) ์ ์ ์ธํด ์ฃผ์๋ค.
const moveToDetailPage = (
e: React.MouseEvent<HTMLParagraphElement, MouseEvent>
) => {
const id = (e.target as HTMLParagraphElement).dataset.id;
navigate(`/detail?id=${id}`);
};
Reference
https://stackoverflow.com/questions/42066421/property-value-does-not-exist-on-type-eventtarget