기본 컴퍼넌트 X 기능 구현
수강생 질문

안녕하세요. 제가 이 부분을 계속해서 반복해서 명령을 내려보고 있는데 정확하게 이대로 반영이 잘 안 되더라고요. 블러페이드 인 페이드 아웃으로 없어지는 것 말씀하신 것보다 속도가 너무 빠르게 적용되고 사라지거나 나타날 때 보니까 그 완성본으로 보면 밑에서 날아올라오는 애니메이션과 가로세로로 이렇게 막 움직이면서 사라지고 하는 애니메이션이 적용되어 있는데 이걸 정확하게 어떻게 설명할지 감이 잘 안 오더라고요. 말씀하신 프롬프트 그대로도 해보고 제가 생각나는 대로도 해 봤는데 잘 안 되네요.


답변 2
답변

영환님 안녕하세요! 혹시 지금 나타나는 모습을 간단하게 영상캡처해서 디스코드에 올려주실 수 있을까요? 아 그리고 저번에 말씀해주신 프롬프트 템플렛이 포함된 예제 완성본을 강의자료에 올렸습니다. 공지사항 한먼만 봐주세요!

답변

(디스코드에서 답변한 내용을 남깁니다) # Dynamic Grid: enter - update - exit ## 1. 배경 설명 참고: [enter, update, exit 튜토리얼](https://observablehq.com/@argwood/tutorial-enter-update-and-exit) 이 dynamic grid에 사용된 인터랙션은 d3.js라는 데이터 시각화 라이브러리에서, 데이터가 바뀔 때 차트가 업데이트되는 방식을 응용한 것입니다. 세 가지 개념으로 나뉩니다. - **enter**: 데이터가 알고리즘을 통해 시각 요소로 입력되는 경우 - **update**: 기존 데이터가 업데이트되는 경우 - **exit**: 기존 데이터가 사라지는 경우 예를 들어보겠습니다. - **enter**는 `[1, 3, 1, 3, 4]`라는 배열 데이터가 처음 입력되어 바 차트를 만드는 것입니다. - **update**는 데이터가 `[2, 1, 4, 2, 4]` 식으로 값이 바뀌어 바의 높이가 변하는 것입니다. 그런데 숫자가 추가되거나 사라질 때는 또 다른 패턴이 보입니다. 데이터가 `[1]`로 줄어들면 첫 번째를 제외한 나머지는 차트에서 사라지고, 반대로 `[2, 1, 4, 2, 4, 1, 2]` 식으로 데이터가 추가되면 새로운 바가 그려집니다. 이때 사라지는 건 **exit**, 다시 나타나는 건 **enter**에 해당합니다. 처음에는 조금 헷갈릴 수 있는데, 데이터 샘플의 수가 바뀌는 상황에서 인터랙션을 표현할 때 사용하는 전형적인 알고리즘입니다. ## 2. 그리드에 응용 예제의 그리드는 바로 이걸 응용한 것입니다. filter에 의해 제품의 배열이 바뀌면 다음이 변할 수 있습니다. - 보여줄 제품의 수 - 각 제품의 위치 - 추가되거나 사라질 제품 예제에서 하려는 건 lumenstate의 연속적인 흐름을 모션으로 표현하는 것입니다. 제품이 나타나거나 사라질 때 blur와 opacity를 사용했습니다. 이게 자연스럽게 작동하려면 다음 규칙을 지켜야 합니다. 1. **exit 먼저**: exit되는 아이템이 있다면, 그것이 완전히 사라질 때까지 다른 제품들은 움직이면 안 됩니다. 2. **update > enter**: 위치가 바뀌어야 하는 아이템이 있다면, 위치 이동이 끝나기 전까지 새로 등장하는 아이템을 등장시키지 않습니다. 3. **update의 움직임**: 대각선으로 정신없이 움직이지 말고, 종과 횡을 한 번에 하나씩만 움직여서 절제된 움직임을 보여줍니다. 따라서 위 조건에 맞게 작동시켜야 합니다. ## 3. 왜 안 되는가? 위 설명은 제가 예제에서 실제로 사용한 프롬프트보다 조금 더 자세히 쓴 것입니다. 영상을 찍었을 때 저는 구현에 성공했지만, 같은 프롬프트라도 해석의 여지가 100% 없는 건 아니기 때문에 결과가 조금 다르게 나올 수 있습니다. ## 4. 두 가지 시도 한번 잘못된 결과가 반복되면, 차라리 새 세션에서 위 내용을 다시 설명하는 것이 좋습니다. 한번 시도해보고 그래도 잘 안 되면, `/goal`을 사용해서 위 조건을 만족할 때까지 코드를 점검해달라고 루프를 걸어보세요. 그래도 안 되면 아래 내용을 직접 지적해보세요. ## 5. 영상에서 발견된 잘못된 부분 - exit 아이템과 update 아이템이 동시에 움직임 (움직이는 타이밍이 겹침) - update 아이템의 불필요한 동선 발견. 이전 위치에서 다음 위치로 직선 운동이어야 하는데, 중간에 아이템의 y 위치가 바뀌는 현상

같은 걸 만들다 막혔나요?

Vibe Design Lab 커뮤니티에서 수강생들이 실제로 막힌 지점과 해결을 나눕니다.