React 컴파일러 린트 진단

React Compiler lint diagnostics

React 규칙 위반을 찾아 컴파일러가 안전하게 최적화할 수 있는 코드를 만듭니다.

···
html
<div class="scene"><div class="editor"><div class="line">function Counter() {</div><div class="line" id="bad">  setCount(count + 1) <span>warning</span></div><div class="line" id="good">  onClick={() => setCount(count + 1)} <span>valid</span></div><div class="line">  return &lt;button /&gt;</div><div class="line">}</div></div><div class="badge" id="badge">RULE VIOLATION</div><div class="cache" id="cache">CACHE BOUNDARY: OFF</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}.editor{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.6em;font:500 clamp(12px,3vmin,15px)/1.35 ui-monospace,monospace;white-space:nowrap;overflow:hidden}.line{margin:.25em 0}.line span{color:var(--accent-3)}#good{display:none}#good span{color:var(--accent)}.badge,.cache{margin-top:clamp(9px,3vmin,17px);padding:.45em;border-radius:6px;text-align:center;font-weight:700}.badge{background:color-mix(in srgb,var(--accent-3) 18%,var(--surface));color:var(--accent-3)}.cache{border:1px dashed var(--line);color:var(--muted)}.cache.on{border-color:var(--accent);color:var(--accent)}
js
let fixed=false;function tick(){fixed=!fixed;document.getElementById("bad").style.display=fixed?"none":"block";document.getElementById("good").style.display=fixed?"block":"none";document.getElementById("badge").textContent=fixed?"RULES PASS":"RULE VIOLATION";document.getElementById("cache").textContent=fixed?"CACHE BOUNDARY: ON":"CACHE BOUNDARY: OFF";document.getElementById("cache").classList.toggle("on",fixed)}tick();setInterval(tick,1500)

컴파일러 기반 린트 규칙은 렌더 중 상태 변경, 잘못된 ref 접근 등 React 규칙 위반을 진단합니다. 진단을 고치면 해당 컴포넌트가 자동 최적화 대상으로 돌아올 수 있습니다.

데모는 렌더 중 setState를 Effect나 이벤트 흐름으로 옮기자 경고가 사라지고 캐시 경계가 활성화되는 과정을 보여줍니다. 린트 통과만으로 모든 렌더가 빨라지는 것은 아니므로 성능은 별도로 측정하세요.

언제 쓰나

React Compiler를 도입하거나 훅·렌더 규칙 위반을 정리할 때 사용합니다.

페이지로 열기 ↗