AgentSkillsCN

defer-state-reads-to-usage-point

将状态读取推迟至实际使用点

SKILL.md
--- frontmatter
name: defer-state-reads-to-usage-point
description: Defer State Reads to Usage Point

Defer State Reads to Usage Point

Don't subscribe to dynamic state (searchParams, localStorage) if you only read it inside callbacks.

Incorrect (subscribes to all searchParams changes):

tsx
function ShareButton({ chatId }: { chatId: string }) {
  const searchParams = useSearchParams();

  const handleShare = () => {
    const ref = searchParams.get('ref');
    shareChat(chatId, { ref });
  };

  return <button onClick={handleShare}>Share</button>;
}

Correct (reads on demand, no subscription):

tsx
function ShareButton({ chatId }: { chatId: string }) {
  const handleShare = () => {
    const params = new URLSearchParams(window.location.search);
    const ref = params.get('ref');
    shareChat(chatId, { ref });
  };

  return <button onClick={handleShare}>Share</button>;
}