next.js를 공부하던 중에, Link태그 내에 a태그를 사용하고 href 속성을 넣지 않으니,
접근성 린터에서 a태그인데 href속성이 없다고 에러를 띄웠다.
그래서 문득 생각이 들었는데, "Link 태그 내부에 a 태그를 쓰지 않아도 정상적으로 동작하는데 반드시 넣어야할까?"
그래서 그 이유를 찾아보기 시작했다.
역시 나보다 먼저 이런 고민을 하신분도 계신다.
https://uchanlee.dev/nextjs/Why-using-a-tag-in-nextjs-Link/
이 글에 따르면
https://github.com/vercel/next.js/blob/canary/packages/next/client/link.tsx
여기에 226라인에 보면, Link태그의 children이 string이면 a태그를 자동으로 붙여주고 있다.
그래서 a태그를 굳이 넣지 않아도 자동으로 a태그가 붙어서 상관이 없다.
그럼 children이 <span>처럼 string도 아닌 일반 태그라 해도 동작할까?
동작한다! 근데 a태그는 자동으로 감싸지지 않는다.
엥? 근데 왜 동작하는거지
이 부분도 궁금해서 코드를 뜯어봤다.
285라인을 보면, onClick을 바인딩해주고 있다.
근데 onClick의 type이 function인 경우에만 그런데, onClick이 아닌 경우에는 어떻게 바인딩되는지 모르겠다.
내가 모르는 또다른 동작이 있는 것 같다.
그럼 Link태그 안에 a태그가 href를 가지고 있다면 어떨까?
테스트를 해보니, Link태그의 href가 반영되었다.
어쩌면 당연한 결과이다.
'개발 > Web Programming' 카테고리의 다른 글
Module not found: Error: Can't resolve '@emotion/styled/base' (0) | 2022.01.09 |
---|---|
[React Native] xcrun: error: SDK "iphoneos" cannot be located (0) | 2021.12.21 |
jest 테스트시에, The `document` global was defined when React was initialized 에러 (0) | 2021.10.07 |
jest에서 localStorage를 mocking하여 test하는법 (0) | 2021.10.06 |
jest에서 MessageChannel등의 window 객체를 못찾는 경우 해결방법 (0) | 2021.10.06 |