-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] refactor: 클릭 이벤트가 있는 요소 드래그 막기 #567
[FE] refactor: 클릭 이벤트가 있는 요소 드래그 막기 #567
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
꿋!!! 👍👍👍👍👍👍👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
깔끔한 방법으로 해결하게 되어 좋네요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
번거로운 작업이었을텐데 수고 많았어요!
@@ -29,7 +31,7 @@ const Breadcrumb = ({ pathList }: BreadcrumbProps) => { | |||
<S.BreadcrumbList> | |||
{pathList.map(({ pageName, path }, index) => ( | |||
<S.BreadcrumbItem key={index} onClick={() => handleNavigation(path)}> | |||
{pageName} | |||
<UndraggableWrapper>{pageName}</UndraggableWrapper> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굿!!!!
|
||
import * as S from './styles'; | ||
|
||
const UndraggableWrapper = ({ children }: EssentialPropsWithChildren) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
EssentialPropsWithChildren
도 잊지 않고 챙겨주셨네요!
🚀 어떤 기능을 구현했나요 ?
드래그 막은 요소
🔥 어떻게 해결했나요 ?
일단, 3가지 막는 방식을 생각했습니다.
user-select: none;
을 추가하는 방식body
에cursor: pointer
가 있는 요소는 모두user-select: none;
을 넣는 방식user-select: none
클래스를 만들어서 클릭 요소에 클래스 이름 추가하기여러 방법을 고민해봤는데 일단 첫 번째 방식은 일일이 아래의 코드를 모두 넣어줘야 한다는 단점이 있어서 선택하지 않았습니다.
원래 제가 생각했던 두번째 방식이 아래 코드를 추가하면
cursor: pointer
속성이 있는 모든 요소에 적용이 될 줄 알았는데... 인라인 스타일로 설정된 요소만 적용이 된다고 해서 선택하지 않았습니다.결국은 세번째 방식으로 드래그 방지 클래스를 만들어서 클릭 요소에 클래스를 적용하는 방식으로 진행했습니다.결론
드래그를 막아주는
prevent-drag
를 클래스로 관리할 경우, 기능이 많아지고 파일이 많아지면서 다소 헷갈릴 수 있다는 점을 우려하여, 컴포넌트로 빼서 children에 클릭 요소들을 넣는 방식으로 변경했습니다.📝 어떤 부분에 집중해서 리뷰해야 할까요?
PreventDrag
가children
요소를 감싸서 드래그를 막는 위치가 적절한지?📚 참고 자료, 할 말
css-real 드래그(drag) 막기