> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 프런트엔드 확장의 링크 등록 마이그레이션

> addFloatingLink가 undefined를 반환하는 경우, 스토어 기반 graph.links 뷰, ComfyUI 프런트엔드 확장의 링크 ID 충돌 처리 방법.

`LinkNetwork.addFloatingLink(link)`는 이제 `LLink | undefined`를 반환합니다.

새 런타임 링크에는 할당되지 않은 링크 ID를 넘기고 반환된 링크를 사용하세요.

```ts theme={null}
const registeredLink = graph.addFloatingLink(link)
if (!registeredLink) return
```

등록이 성공하면, 또는 같은 링크가 이미 토폴로지 스토어에 있으면 등록은 저장된 링크를 반환합니다. 다른 런타임 링크가 이미 그 ID를 소유하고 있으면 등록은 오류를 기록하고, 전달된 링크를 연결되지 않은 상태로 두고 `undefined`를 반환합니다. 사용 중인 링크를 조용히 교체하거나 전달된 링크에 다른 ID를 부여하지 않습니다. `graph.floatingLinks`는 한쪽 끝만 연결된 링크를 위한 필터링된 호환 뷰로 남습니다.

`graph.links`와 `graph.floatingLinks`는 독립적인 네이티브 `Map` 저장소가 아니라 소유자로 필터링된 스토어 기반 호환 뷰입니다. 일반적인 `Map` 읽기 메서드는 캐시된 멤버십 스냅샷을 사용합니다. 토폴로지 멤버가 바뀐 뒤에는 기존 이터레이터를 유지하지 말고 새 이터레이터를 얻으세요. 두 뷰 모두 활성 Pinia가 필요하며, 스토어가 없는 상태를 빈 그래프로 표현하지 않습니다.

네이티브 `Map.set()`처럼 `view.set(id, link)`는 등록 결과가 아니라 뷰를 반환합니다. 등록은 기존 링크를 유지한 채 ID 충돌이나 대상 충돌을 거부할 수 있으므로, 뷰를 통해 삽입하는 확장은 `view.get(link.id) === link`로 성공을 확인해야 합니다. 같은 뷰의 링크와 ID가 충돌한 뒤에는 `has()`가 `true`를 반환하고 `get()`은 기존 링크를 반환합니다. 해당 작업을 처리할 수 있으면 그래프 연결 API와 플로팅 링크 API를 우선 사용하세요. 이 API들이 주변 생명주기를 조율하기 때문입니다. 어느 뷰에도 `Map.prototype` 메서드를 직접 호출하거나 네이티브 `Map`의 내부 저장소에 의존하지 마세요.

입력 교체는 이전 링크의 연결 해제 콜백보다 먼저 새 링크를 커밋하므로, 콜백 조회는 빈 입력이 아니라 교체된 링크를 봅니다. 일반 연결 콜백이 그 뒤를 따릅니다.

이전에 반환값을 무시하던 확장은 전달된 링크를 보관, 렌더링, 변경하기 전에 `undefined`를 처리해야 합니다. 새 런타임 링크에 양수 링크 ID를 미리 지정하지 말고 그래프가 생성하게 하세요.

영속 ID 충돌 복구는 워크플로우 가져오기와 역직렬화의 책임입니다. 직렬화된 토폴로지를 가져오는 확장은 런타임 등록 API를 사용하기 전에 그 경계에서 충돌하는 ID를 정규화해야 합니다.

루트 `LGraph`를 생성하거나 직렬화된 데이터로 구성하려면 활성 Pinia가 필요합니다. 그래프 토폴로지가 생명주기 전반에 걸쳐 스토어 기반이기 때문입니다.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.