Fragment ref

Fragment refs

추가 래퍼 없이 여러 형제 DOM 요소에 그룹 동작을 적용합니다.

···
html
<div class="scene"><div class="tree">&lt;Fragment ref&gt; <span>no wrapper DOM</span></div><div class="siblings"><div id="one">item A</div><div id="two">item B</div><div id="three">item C</div></div><div class="focus" id="focus">focus() → item A</div></div>
css
.scene{width:min(94vw,800px);height:min(86vh,320px);position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:clamp(9px,2.4vmin,20px);font:500 clamp(15px,4vmin,18px)/1.3 var(--font-sans,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif)}.scene b,.scene strong{font-weight:700}.label{color:var(--muted)}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pill{border:1px solid var(--line);border-radius:8px;padding:.4em .65em;background:var(--bg)}.active{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 10%,var(--surface))!important}.tree{font:700 clamp(15px,4vmin,18px) ui-monospace,monospace;color:var(--accent)}.tree span{float:right;color:var(--muted);font-size:.8em}.siblings{display:flex;gap:7px;margin:clamp(25px,9vmin,56px) 0}.siblings div{flex:1;text-align:center;border:1px solid var(--line);border-radius:7px;padding:clamp(9px,4vmin,24px) 2px}.siblings div.on{outline:3px solid var(--accent);outline-offset:2px;background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.focus{text-align:center;color:var(--muted);font-family:ui-monospace,monospace}
js
const ids=["one","two","three"],names=["A","B","C"];let n=0;function tick(){const s=n%3;ids.forEach((id,i)=>document.getElementById(id).classList.toggle("on",i===s));document.getElementById("focus").textContent="focus() → item "+names[s];n++}tick();setInterval(tick,850)

React 19.3의 Fragment ref는 FragmentInstance를 통해 자식 DOM에 제한된 메서드를 제공합니다. 그룹에 포커스를 옮기거나 이벤트를 연결하고, 가시성을 관찰할 수 있습니다.

데모는 단일 Fragment 아래 세 형제 항목을 순서대로 포커스하면서 별도 래퍼 노드가 없음을 보여줍니다. 일반적인 데이터 흐름은 여전히 선언적 렌더가 우선이고, ref는 필요한 DOM 동작에만 쓰세요.

언제 쓰나

래퍼가 레이아웃을 바꾸는 상황에서 형제 요소들을 한 그룹으로 포커스·관찰할 때 사용합니다.

페이지로 열기 ↗