AgentSkillsCN

narrow-effect-dependencies

缩小 Effect 依赖范围

SKILL.md
--- frontmatter
name: narrow-effect-dependencies
description: Narrow Effect Dependencies

Narrow Effect Dependencies

Specify primitive dependencies instead of objects to minimize effect re-runs.

Incorrect (re-runs on any user field change):

tsx
useEffect(() => {
  console.log(user.id);
}, [user]);

Correct (re-runs only when id changes):

tsx
useEffect(() => {
  console.log(user.id);
}, [user.id]);

For derived state, compute outside effect:

tsx
// Incorrect: runs on width=767, 766, 765...
useEffect(() => {
  if (width < 768) {
    enableMobileMode();
  }
}, [width]);

// Correct: runs only on boolean transition
const isMobile = width < 768;
useEffect(() => {
  if (isMobile) {
    enableMobileMode();
  }
}, [isMobile]);