askill
use-useref-for-transient-values

use-useref-for-transient-valuesSafety 95Repository

Use useRef for Transient Values

0 stars
1.2k downloads
Updated 2/24/2026

Package Files

Loading files...
SKILL.md

Use useRef for Transient Values

When a value changes frequently and you don't want a re-render on every update (e.g., mouse trackers, intervals, transient flags), store it in useRef instead of useState. Keep component state for UI; use refs for temporary DOM-adjacent values. Updating a ref does not trigger a re-render.

Incorrect (renders every update):

function Tracker() {
  const [lastX, setLastX] = useState(0);

  useEffect(() => {
    const onMove = (e: MouseEvent) => setLastX(e.clientX);
    window.addEventListener('mousemove', onMove);
    return () => window.removeEventListener('mousemove', onMove);
  }, []);

  return (
    <div
      style={{
        position: 'fixed',
        top: 0,
        left: lastX,
        width: 8,
        height: 8,
        background: 'black',
      }}
    />
  );
}

Correct (no re-render for tracking):

function Tracker() {
  const lastXRef = useRef(0);
  const dotRef = useRef<HTMLDivElement>(null);

  useEffect(() => {
    const onMove = (e: MouseEvent) => {
      lastXRef.current = e.clientX;
      const node = dotRef.current;
      if (node) {
        node.style.transform = `translateX(${e.clientX}px)`;
      }
    };
    window.addEventListener('mousemove', onMove);
    return () => window.removeEventListener('mousemove', onMove);
  }, []);

  return (
    <div
      ref={dotRef}
      style={{
        position: 'fixed',
        top: 0,
        left: 0,
        width: 8,
        height: 8,
        background: 'black',
        transform: 'translateX(0px)',
      }}
    />
  );
}

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

82/100Analyzed 3/2/2026

Well-structured skill explaining useRef for transient values with clear incorrect/correct code examples. Covers when to use refs vs state in React. Score boosted by clear use case explanation (R3), structured examples (R5), skills folder location (R10), and high-density technical content (R11). Minor deduction for lacking metadata/tags. A practical, reusable React pattern skill.

95
85
80
70
85

Metadata

Licenseunknown
Version-
Updated2/24/2026
Publisherihj04982

Tags

No tags yet.