AgentSkillsCN

do-not-wrap-simple-expression-in-usememo

切勿在 useMemo 中包裹返回原始值的简单表达式

SKILL.md
--- frontmatter
name: do-not-wrap-simple-expression-in-usememo
description: Do not wrap a simple expression with a primitive result type in useMemo

Do not wrap a simple expression with a primitive result type in useMemo

When an expression is simple (few logical or arithmetical operators) and has a primitive result type (boolean, number, string), do not wrap it in useMemo. Calling useMemo and comparing hook dependencies may consume more resources than the expression itself.

Incorrect:

tsx
function Header({ user, notifications }: Props) {
  const isLoading = useMemo(() => {
    return user.isLoading || notifications.isLoading;
  }, [user.isLoading, notifications.isLoading]);

  if (isLoading) return <Skeleton />;
  // return some markup
}

Correct:

tsx
function Header({ user, notifications }: Props) {
  const isLoading = user.isLoading || notifications.isLoading;

  if (isLoading) return <Skeleton />;
  // return some markup
}