react-component

📁 bumgeunsong/daily-writing-friends 📅 10 days ago
1
总安装量
1
周安装量
#54686
全站排名
安装命令
npx skills add https://github.com/bumgeunsong/daily-writing-friends --skill react-component

Agent 安装分布

openclaw 1
claude-code 1

Skill 文档

React Component Patterns

Component Structure

Follow this order in every component file:

// 1. External imports
import { useState } from 'react';
import { useQuery } from '@tanstack/react-query';

// 2. Internal shared imports
import { Button } from '@/shared/ui/button';
import { useAuth } from '@/shared/hooks/useAuth';

// 3. Feature-specific imports
import { usePostEditor } from '../hooks/usePostEditor';

// 4. Types
interface PostEditorProps {
  boardId: string;
  initialContent?: string;
}

// 5. Component
export function PostEditor({ boardId, initialContent }: PostEditorProps) {
  // hooks first
  // derived state
  // handlers
  // render
}

Custom Hooks Pattern

Place business logic in [feature]/hooks/:

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { createPost } from '../api/post';

export function usePostEditor(boardId: string) {
  const queryClient = useQueryClient();

  const createMutation = useMutation({
    mutationFn: (data: CreatePostData) => createPost(boardId, data),
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: ['posts', boardId] });
    },
  });

  return { createMutation };
}

Path Aliases

import { Component } from '@/shared/components/Component';
import { useHook } from '@board/hooks/useHook';
import { Post } from '@post/model/Post';

// Available: @/, @board/, @post/, @comment/, @draft/,
//            @notification/, @user/, @shared/, @login/, @stats/

Quick Reference

Location Purpose
[feature]/components/ React components
[feature]/hooks/ Custom hooks with business logic
[feature]/model/ TypeScript types
@/shared/ui/ shadcn/ui components
@/shared/hooks/ Shared hooks